在URL中传递中文参数时传递失败的解决方案

来源:互联网 发布:linux不保存退出 编辑:程序博客网 时间:2024/05/18 00:53

环境:Tomcat


问题描述:使用 <a> 标签的 herf 来传递页面的参数时,英文正常,中文失败


原因分析:使用 Tomcat 在URL中传递参数,是通过 HTTP 报头来传递的,与表单传递不同,表单中传递的参数是在HTTP中的 body 中传送的,字符过滤器只能起到过滤 HTTPbody 中的参数,不能过滤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" (防止出现意外)
原创粉丝点击