参数乱码处理流程图:
传参数的时候,经常会碰到乱码问题,下面对常见的几种解决方法做一下总结:
参数传到接收页面是否乱码,可以先让客户在接收参数的 jsp页面将接收到的参数打印出来,确认是否已经是乱码了。如果已经乱码了,有以下一些方法来解决。
1.在页面接受参数的代码前加上转码语句。
request.setCharacterEncoding( “GBK” );
2.客户页面的编码是utf-8
建议客户将接收到的参数进行转码
String name = new String(request.getParameter(“name”).getBytes(“gb2312”),”utf-8”);
客户页面的编码是GBK
String arg1 = new String(request.getParameter(“arg1”).getBytes(“GB2312”),”GBK”);
3.http请求中,带参数
修改应用服务器的配置文件。如tomcat的server.xml文件
<!– Define a non-SSL HTTP/1.1 Connector on port 8080 –>
<Connector port=”8080″
maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” URIEncoding=”GBK”/>
加上最后的uriEncoding就OK了
4.做负载均衡的时候,参数乱码
修改应用服务器的配置文件。如tomcat的server.xml文件
<!– Define an AJP 1.3 Connector on port 8009 –>
<Connector port=”8010″ enableLookups=”false” redirectPort=”8443″ protocol=”AJP/1.3″
URIEncoding=”GBK”/>
加上最后的uriEncoding就OK了
注意:3 和 4 修改的是 server.xml 文件中不同的地方。
5.传递中文参数的时候,如果出现乱码,特别是双数中文正常,单数中文乱码的情况,可以尝试用如下办法解决:
(1)、客户端编码,使用js方法
function encode(obj){
obj.value=encodeURI(obj.value);
}
(2)、服务端解码,使用java类方法
keyword = java.net.URLDecoder.decode(keyword, “UTF-8″);
总结:把上次说的3和4设置好,一般就不会出现乱码了。