日期:2014-05-16  浏览次数:20400 次

location后的中文乱码问题
我所有的页面和程序都是UTF-8编码的,而且已经配置了SetCharactorEncodingFilter,但是页面里使用location= "xxx.jsp? "xxx=xxx的时候,在程序里面request.getParameter( "xxx ");无论如何都不能取出中文字符,但是用form提交就没有类似的问题,请问一下这种情况我该怎么办,程序已经写完了,实在不想都改成form提交,太麻烦了。

------解决方案--------------------
使用页面中使用encodeURI对参数编码
location= "xxx.jsp?xxx= "+encodeURI(xxx)

------解决方案--------------------
如果url?xx你自己可以控制,则最好进行编码,服务器端和js都可以
如果用户直接输入url?xx=中文。则可以这样

在tomacat下的server.xml里找到

<Connector port= "8080 " maxHttpHeaderSize= "8192 "
maxThreads= "150 " minSpareThreads= "25 " maxSpareThreads= "75 "
enableLookups= "false " redirectPort= "8443 " acceptCount= "100 "
connectionTimeout= "20000 " disableUploadTimeout= "true " URIEncoding= "GB2312 " />

添加 URIEncoding= "GB2312 " 即可
------解决方案--------------------
location= "xxx.jsp?xxx= "+encodeURIComponent(xxx)
也要添加 URIEncoding= "GB2312 " 到server.xml,因为tomcat有些变态,
设了filter也无效。