首页 > 代码库 > 请求与响应的时候乱码问题原理

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

 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");

 

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