环境:Tomcat
问题描述:使用 <a>
标签的 herf
来传递页面的参数时,英文正常,中文失败
原因分析:使用 Tomcat
在URL中传递参数,是通过 HTTP
报头来传递的,与表单传递不同,表单中传递的参数是在HTTP中的 body
中传送的,字符过滤器只能起到过滤 HTTP
中 body
中的参数,不能过滤Head传递的参数,而TOMCAT中Head默认的是 ISO8859-1
的编码方式,所以在URL中传递过去后就乱码了。
解决方案:在服务器server.xml文件中,找到你使用端口的Connector,向其配置编码方式,即加入useBodyEncodingForURI="true" URIEncoding="UTF-8"
然后重启服务器即可。
举例:我使用的是8080端口,则
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
要注意的是,如果你的Connector中已经有 URIEncoding="UTF-8"
也需要加上 useBodyEncodingForURI="true"
(防止出现意外)