Tomcat的字符编码问题
正在进行奇怪的字符编码。 我正在使用JSP(JSTL)和Struts与Tomat 6。
我有我的JSP页面编码:
问题是当我尝试使用encodeURI传递url时:
$('#mailer_filter').change(function(){ var val = $(this).val(); console.log(val); console.log(escape(val)); console.log(encodeURI(val)); location.href = 'mailList.a?' + encodeURI($(this).val()); });
action(java end)上的参数如下:
Gaz Métro
但是在前端它显示为:
Gaz Métro
这是正确的方法。 我能做些什么?
做以下
1)HTML代码
2)IE浏览器的浏览器设置 – 编码 – Unicode(UTF-8)
3)Tomcat Server server.xml – 在Connector标签中添加“URIEncoding”属性为
catalina.sh/catalina.bat – 添加以下内容
set JAVA_OPTS=--Xms256m -Xmx1024m -Xss268k -server -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -Djava.awt.headless=true -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 set CATALINA_OPTS=-Dfile.encoding="UTF-8"
4)MIME类型的响应应为“application / x-www-form-urlencoded”
你有没有遵循这些步骤?
http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8
复制如下:
使用UTF-8作为一切的字符编码是一个安全的选择。 这应该适用于几乎所有情况。
要完全切换到使用UTF-8,您需要进行以下更改:
-
在server.xml中设置URIEncoding =“UTF-8”。 参考:HTTP连接器,AJP连接器。
-
使用字符编码筛选器,默认编码设置为UTF-8
-
更改所有JSP以在其contentType中包含charset名称。
例如,对于通常的JSP页面使用
<%@page contentType="text/html; charset=UTF-8" %>
,并使用
用于XML语法的页面(又名JSP文档)。 -
更改所有servlet以设置响应的内容类型,并将内容类型中的charset名称包含为UTF-8。
使用
response.setContentType("text/html; charset=UTF-8")
或response.setCharacterEncoding("UTF-8")
。 -
更改您使用的任何内容生成库(Velocity,Freemarker等)以使用UTF-8并在其生成的响应的内容类型中指定UTF-8。
-
在字符编码filter或jsp页面有机会将编码设置为UTF-8之前,禁用可能读取请求参数的任何阀门或filter。 有关更多信息,请访问http://www.mail-archive.com/users@tomcat.apache.org/msg21117.html 。
尝试将tomcat连接器的URIEncoding参数(在server.xml中)设置为UTF-8:
例如: