Get提交方式的中文乱码解决办法

解决思路:
1、在页面对乱码汉字进行编码;
2、在服务端进行解码;

页面编码具体实现
页面编码有两种方式:js方式,java方式。
js方式:
var nickname=$('#nickname').val();
nickname=encodeURIComponent(nickname);//默认utf-8

java方式:
<a href="ds.jsp?url=<%=java.net.URLEncoder.encode("编码的是这里"," utf-8 ")%>">点击这里</a>

服务端解码具体实现
解码方式有两种,修改tomcat的server.xml配置,程序解码。
修改tomcat的server.xml配置
<Connector
         port="8080"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true"
<!--在里边加上这个参数-->
URIEncoding=" utf-8 "
     />
注意这里配置的字符集要和页面的编码字符集一致

程序解码
String nickname=new String(request.getParameter("nickname").getBytes("ISO-8859-1"),"utf-8 ");

为什么会这样呢,造成这种现象的原因是Tomcat对get和post两种提交方式的处理方法不一样造成的。自从Tomcat5.x开始,GET和POST方法提交的信息,Tomcat采用了不同的方式来处理编码,对于POST请求,Tomcat会仍然使用request.setCharacterEncoding方法所设置的编码来处理,如果未设置,则使用默认的iso-8859-1编码。而GET请求则不同,Tomcat对于GET请求并不会考虑使用request.setCharacterEncoding方法设置的编码,而会永远使用iso-8859-1编码

猜你喜欢

转载自ofamber.iteye.com/blog/2117391