请求与响应的时候乱码问题原理

Posted 奋斗的少年WH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请求与响应的时候乱码问题原理相关的知识,希望对你有一定的参考价值。

 1 乱码:
 2 
 3 请求乱码:
 4 get:
 5 
 6 1.修改tomcat中server.xml
 7 URIEncoding="UTF-8"  服务器采用utf-8的字符集编码 来进行 解码和编码
 8 默认的编码格式 是 ISO-8859-1
 9 
10 2.new String(sname.getBytes("ISO-8859-1"),"UTF-8")
11 浏览器以utf-8编码发送数据 ,服务器默认以ISO-8859-1解码,发送数据给servlet,servlet中需要再以ISO-8859-1格式 获得字节,然后 按照utf-8的字符集 解码
12 
13 post:    request.setCharacterEncoding("UTF-8");
14 设置请求数据以utf-8方式 编码 解码,这种方式只对 体提交方式有效
15 
16 
17 响应乱码:
18 
19 response.setCharacterEncoding("UTF-8"); 只是说明服务器 对客户端 响应数据 是以UTF-8 方式,响应,但是 浏览器以何种方式 阅读数据 不受控制!! 
20 
21 response.setContentType("text/html;charset=UTF-8"); 以UTF-8 方式 响应数据,并提醒浏览器 以这种方式 阅读
22 
23 response.setContentType("text/html;charset=UTF-8") 可以完全替代 response.setCharacterEncoding("UTF-8")
 1 乱码问题:           ASCII码值
 2 
 3 请求的时候乱码:
 4 get提交
 5 ***********方式一
 6 String name=request.getParameter("uname");
 7 byte[] bs=name.getBytes("ISO-8869-1");//获得客户端编码的字节数组
 8 String sname=new String(bs,"utf8");//把字节数组解码成utf-8的字符串
 9 
10 ***********方式二   只针对头(get)提交方式
11 在tomcat的server.xml中设置为URIEncoding="utf-8"
12 
13 
14 post提交
15 方式一同get的方式一
16 ***********方式二   只针对体提交方式
17 request.setCharacterEncoding("utf-8");
18 
19 
20 
21 响应的时候乱码:
22 response.setCharacterEncoding("utf-8")//AJAX可以
23 response.setContentType("text/html;charset=UTF-8");

 

以上是关于请求与响应的时候乱码问题原理的主要内容,如果未能解决你的问题,请参考以下文章

ajax 请求servlet 响应 中文乱码

请求乱码和响应编码的解决方案

servlet请求编码与响应编码问题(编码不一致可能会导致乱码)

HttpClient发送请求后得到的响应内容出现部分乱码的问题

请求 响应乱码的问题

java---servlet与filter的联系与区别