总结一下,在JavaWeb中针对各种情况处理中文乱码的方法。
首先我们看下,一个请求响应的流程
浏览器------------------>Servlet容器--------------->显示页面
编码 使用容器的URIEncoding转码 解码
举例:Tomcat作为Servlet容器,Tomcat的默认的URIEncoding是“iso8859-1“,可在server.xml配置文件中指定编码类型
1.JSP中显示乱码
解决方法:在JSP中第一行加上<%@ page pageEncoding="UTF-8"%>
即可解决。
2.Servlet中显示乱码
解决方法:在Servlet中加上response.setContentType("text/html;charset=UTF-8");
3.Post请求中传中文参数显示乱码
解决方法:接受参数前,加上request.setCharaterEncoding("UTF-8");
4.Get请求中传中文参数显示乱码
第一种解决方法:程序转码
String value = new String(pValue.getBytes("iso-8859-1"), "UTF-8");
第二种解决办法:
解决方法:修改tomcat,conf文件夹下的server.xml文件。将其中的
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
修改为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>