Tomcat服务器默认的编解码格式就是ISO8859-1
GET请求乱码:
原因: 1、所有的请求参数是带在url地址上的
2、tomcat收到这个清求就会调用默认的编解码格式(ISO8859-1)将其解码完成,并封装成reguest对象;
String un = reguest.getParameter(' username");
un = new String(un.getBytes("ISO8859-1"),"UTF-8");//原理
解决:去改服务器的配置文件,server.xml
在8080端口配置处添加一句URIEncoding=“utf-8”;
POST请求乱码:
原因:请求带来的数据都在请求体中,tomcat并不着急解析请求体,一但调用request.getParameter("");将整个请求体使用默认编码格式全部解析完成。
解决:
在调用request.getParameter()之前request.setCharacterEncoding(“utf-8”);
响应乱码: (服务器发给浏览器的数据,浏览器收到,解析乱码) ;
原因:直接写出去的数据,浏览器并不知道数据的内容类型以及编码格式等。浏览器用默认的格式打开(utf-8,gbk);
解决:给浏览器的数据一定要说清楚这是什么?
response.setContentType(“text/html;charset=utf-8”);