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,您需要进行以下更改:

  1. 在server.xml中设置URIEncoding =“UTF-8”。 参考:HTTP连接器,AJP连接器。

  2. 使用字符编码筛选器,默认编码设置为UTF-8

  3. 更改所有JSP以在其contentType中包含charset名称。

    例如,对于通常的JSP页面使用<%@page contentType="text/html; charset=UTF-8" %> ,并使用用于XML语法的页面(又名JSP文档)。

  4. 更改所有servlet以设置响应的内容类型,并将内容类型中的charset名称包含为UTF-8。

    使用response.setContentType("text/html; charset=UTF-8")response.setCharacterEncoding("UTF-8")

  5. 更改您使用的任何内容生成库(Velocity,Freemarker等)以使用UTF-8并在其生成的响应的内容类型中指定UTF-8。

  6. 在字符编码filter或jsp页面有机会将编码设置为UTF-8之前,禁用可能读取请求参数的任何阀门或filter。 有关更多信息,请访问http://www.mail-archive.com/users@tomcat.apache.org/msg21117.html 。

尝试将tomcat连接器的URIEncoding参数(在server.xml中)设置为UTF-8:

例如: