近期项目遇到中文乱码问题,需要兼容很多请问,故又回顾了乱码的产生及解决,在此记录一下:
传递方(页面get/post)——>后台(经过Tomcat等服务器,以Tomcat为例)
2种情况:
1、URL形式:URL方式+参数访问、页面链接、表单get请求(http://XXX?key=value&key=value...)
解决:
a、new String(request.getParameter("XXX").getBytes("服务端编码"),"页面编码");
注:到服务端,经过Tomcat界面,需看Tomcat的server.xml文件的编码格式<
Connector
URIEncoding
=
"utf-8"
/>
,
无则默认iso-8859-1,故看到好多地方直接是new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8")
b、前台js对URL转码,后台解码:
js:encodeURI(encodeURI(url));
后台:URLDecoder.decode(name,"UTF-8");
2、post请求
解决:request.setCharacterEncoding(“页面编码格式”),一般服务器端代码有过滤器filter,核实是否与页面编码格式一致即可。