【转自】http://blog.csdn.net/rascalboy520/article/details/2511175
在URL中传递参数,是通过HTTP报头来传递的.并不是类似于通过表单来传递,表单中传递的参数是在HTTP中的BODY中传送的.而设置字符过滤器只能起到过滤HTTP中BODY中的参数.而TOMCAT默认是ISO8859-1的编码方式,所以你在URL中传递过去后就是乱码了.而且过滤器也不管用了. 解决方法.直接改变TOMCAT的默认字符编码方式: tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码 需在服务器server.xml中配置对应的端口中配置编码方式即可.例如:
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.