码迷,mamicode.com
首页 > 其他好文 > 详细

request和response的setCharacterEncoding()方法

时间:2021-06-15 17:55:42      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:统一   code   art   parameter   pre   解决   响应   ext   浏览器   

request和response的setCharacterEncoding()方法

1、pageEncoding="UTF-8"的作用是设置jsp编译成Servlet时使用的编码

2、contentType="text/html;charset=UTF-8"的作用是指定服务器响应给浏览器的编码

jsp页面要经过两次的编码,第一阶段会用pageEncoding,第二阶段会用utf8-utf8,第三阶段就是由Tomcat出来的网页,
用的是contentType属性。

第一阶段是jsp翻译成.java源文件,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的
UTF-8JAVA源码,如果pageEncoding设定错了,或者没有设定,出来的就是中文乱码。

第二阶段是从.java源码编译到字节码文件.class,不论jsp编写时候用的是什么编码方案,经过这个阶段的结果全部
是UTF-8的encoding的java源码。

对第二节阶段的解释,javac用UTF-8的encoding读取java源文件,编译成UTF-8encoding的二进制文件
(即.class文件),这是JVM对常数字串在二进制文件内的表达规范。

第三阶段就是Tomcat(或者其容器对象)载入和执行阶段二来的二进制文件,输出的结果,也就是在客户端
(即浏览器页面)见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效。

3、request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求(例如:由浏览器表单提交的请求参数)和数据取值时的编码,不指定的话默认是IOS-8859-1(注意 request.setCharacterEncoding只能解决POST请求方式的乱码)。

4、解决get方式的乱码可以修改tomcat配置文件中的server.xml中的URIEncoding属性

或者使用使用过滤器来对request对象进行代理 使其可以处理get请求方式的乱码或者

String str = new String(str.getBytes("ISO-8859-1"),"UTF-8");

5、response.setContentType("text/html;charset=utf-8")的作用是指定服务器响应给浏览器的编码,同时浏览器也是根据这个参数对其接收到的数据进行重新编码(或者称为解码)。

response.setContentType这个方法设置发送到客户端的响应的内容类型 此时响应还没有提交 给出的内容
类型可以包括字符编码说明 例如:text/html;charset=utf-8 如果该方法在getWritter方法被调用之前被调用
那么响应的字符编码将仅从给出的内容类型中设置 该方法如果在getWritter方法被调用之后或者在被提交之后调用
将不会设置响应的字符编码 在使用http协议的情况中 该方法设置Content-type实体报头

6.response.setCharacterEncoding(“UTF-8”)的作用是指定服务器响应给浏览器的编码。

对于发送数据,服务器按照response.setCharacterEncoding 》contentType 》pageEncoding的优先顺序,对咬发送的数据进行编码。

注意,GET是URL解码的方式,默认解码格式Tomcat编码格式,所以URL解码是UTF-8,覆盖掉了request容器解码的格式。

POST是实体内容解码方式,默认解码格式是request所设置的编码格式,与URL(Tomcat解码方式)无关。

Tomcat8以后的服务器中response容器默认以UTF-8的格式解析数据,所以不需要设置request的编码格式。

request.setCharacterEncoding(“utf-8”);

post得到前台数据:(request容器默认是gbk格式)
request.setCharacterEncoding(“utf-8”);
System.out.println(request.getParameter(“name”));

GET得到前台数据:(不需要设置编码格式,默认是按照tomcat服务器的编码格式)
System.out.println(request.getParameter(“name”));

GET POST给前台传数据
response.setCharacterEncoding(“utf-8”);
response.getWriter().write(“我爱你”);

本文参考:https://blog.csdn.net/qq_38409944/article/details/81327414

request和response的setCharacterEncoding()方法

标签:统一   code   art   parameter   pre   解决   响应   ext   浏览器   

原文地址:https://www.cnblogs.com/gesh-code/p/14883527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!