此问题搞了一天,最后配置tomcat支持url中文参数,问题解决。
在js文件中打开新的url地址时,如果url中附带了中文,则易出现乱码,解决方法如下(两方面):
1.js文件中,定义url后,运用encodeURI进行转码。eg:
var url="/pjgl/layouts/wdlr/doSmartDownload.jsp?accname="+mydata;
url=encodeURI(url);
url=encodeURI(url);
window.location.href=url;
2.对应处理的jsp中,对接收到的accname进行解码。eg:
String accname=request.getParameter("accname");//接收ext的值
accname = java.net.URLDecoder.decode(accname,"UTF-8");
3.忽视了tomcat支持URL中文参数的配置。--->必须得让tomcat支持中文啊
配置tomcat支持URL中文参数,只需添加Connector的URIEncoding参数即可,默认情况下该参数未被配置。要支持URL参数支持中文,加上URIEncoding=”GBK”就行了(见1中附代码最后一行)。
在以上两步都做好的情况下,还是不行,此问题困扰许久,最后经闫哥点播,还是改tomcat的编码设置,在conf文件下的server.xml
修改以下内容:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" URIEncoding="true"/>
搞定~~~~~~~~~~
对URIEncoding的理解:
1.
经验证,Tomcat的Server.xml的URIEncoding="UTF-8" 配置只对"GET"类型的请求有效,对"POST"请求类型无效。
即配置了URIEncoding="UTF-8" 后,在服务器端接收到的"POST"类型请求参数编码仍然为"ISO8859-1",而不是"UTF-8"。
2.