setCharacterEncoding

1、pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。 
2、contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。 
3、request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码。
4、response.setCharacterEncoding("UTF-8")的作用是指定对服务器响应进行重新编码的编码。 
response.setCharacterEncoding("UTF-8")的作用是指定对服务器响应进行重新编码的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。所以在无论你在JSP中设置response.setCharacterEncoding ("UTF-8")或者response.setCharacterEncoding("GBK"),浏览器均能正确显示中文(前提是你发送到浏览器的数据编码是正确的,比如正确设置了pageEncoding参数等)。

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

对于接收数据,要分三种情况。一种是浏览器直接用URL提交的数据,另外两种是用表单的GET和POST方式提交的数据。

对于表单中POST方式提交的数据,只要在接收数据的JSP中正确request.setCharacterEncoding参数,即将对客户端请求进行重新编码的编码设置成浏览器编码,就可以保证得到的参数编码正确。有写读者可能会问,那如何得到浏览器编码呢?上面我们提过了,在默认请情况下,浏览器编码就是你在响应该请求的JSP页面中response.setCharacterEncoding设置的值。所以对于POST表单提交的数据,在获得数据的JSP页面中request.setCharacterEncoding要和生成提交该表单的JSP页面的 response.setCharacterEncoding设置成相同的值。

对于URL提交的数据和表单中GET方式提交的数据,在接收数据的JSP中设置request.setCharacterEncoding参数是不行的,因为在Tomcat5.0中,默认情况下使用ISO- 8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码),而不使用该参数对URL提交的数据和表单中GET方式提交的数据进行重新编码(解码)。要解决该问题,应该在Tomcat的配置文件的Connector标签中设置useBodyEncodingForURI或者 URIEncoding属性,其中useBodyEncodingForURI参数表示是否用request.setCharacterEncoding 参数对URL提交的数据和表单中GET方式提交的数据进行重新编码,在默认情况下,该参数为false(Tomcat4.0中该参数默认为true); URIEncoding参数指定对所有GET方式请求(包括URL提交的数据和表单中GET方式提交的数据)进行统一的重新编码(解码)的编码。 URIEncoding和useBodyEncodingForURI区别是,URIEncoding是对所有GET方式的请求的数据进行统一的重新编码(解码),而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码(解码),不同的页面可以有不同的重新编码(解码)的编码。所以对于URL提交的数据和表单中GET方式提交的数据,可以修改 URIEncoding参数为浏览器编码或者修改useBodyEncodingForURI为true,并且在获得数据的JSP页面中 request.setCharacterEncoding参数设置成浏览器编码

时间: 2024-10-27 08:15:23

setCharacterEncoding的相关文章

编码中的setCharacterEncoding 理解<转自-fancychendong>

1.pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码. 2.contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码. 3.request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码.4.response.setCharacterEncoding("UTF-8")的作用

contentType,pageEncoding,charset,setCharacterEncoding

contentType,pageEncoding,charset,setCharacterEncoding HTML中的meta标签,以及HTTP Header. -------------字符集.字符编码也是很大一块内容. meta标签还是值得深入研究一下的.

request 和response 中的setCharacterEncoding区别

response和request的setCharacterEncoding 一.request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值. 指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码.值得注意的是在执行setCharacterEncoding()之前,不能执行任何getParameter().而且,该指定只对POST方法有效,对GET方法无效.分析原因,应该是在执行第一个

servlet response设置setCharacterEncoding无效

response的setCharacterEncoding无效,原因有待进一步研究 修改为response.setContentType("text/html;charset=UTF-8");即可 简单总结一下: (1)设置request的编码方式setCharacterEncoding,与request.getParameter有关,与发起申请的页面编码方式一致 (2)设置响应页面的编码方式response.setContentType("text/html;charset

request.setcharacterencoding()和request.setcontenttype(“html/css;charset”)的格式区别

1.request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值 指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码.值得注意的是在执行setCharacterEncoding()之前,不能执行任何getParameter().而且,该指定只对POST方法有效,对GET方法无效.分析原因,应该是在执行第一个getParameter()的时候,Java将会按照编码分析所有的提交内容,而后

SpringMVC问题——response. setCharacterEncoding()无效,导致中文乱码

2016-07-11 response. setCharacterEncoding()需要在response.getWriter()或者response.getOutputStream()前调用,否则不生效. 容易出现中文乱码,而且所有乱码的格式是??? 在SpringMVC中 下面就是容易出错的地方 由于printWriter对象由SpringMVC 框架自动实例并作为参数传入,再调用Presponse. setCharacterEncoding(“UTF-8”);语句将不生效,容易出现中文乱

编码中的setCharacterEncoding 理解

1.pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码.  2.contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码.  3.request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码. 4.response.setCharacterEncoding("UTF-8")

request.setCharacterEncoding("utf-8");

request.setCharacterEncoding("utf-8");不加这句话时,从input控件得到值要用new String(request.getParameter("").getBytes("ISO-8859-1"),"utf-8")方法,而从 a href=""中得到值直接用request.getParameter("")方法:而加入了这句话后,从input控件得到值直

response和request的setCharacterEncoding区别

一.request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值. 指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码.值得注意的是在执行setCharacterEncoding()之前,不能执行任何getParameter().而且,该指定只对POST方法有效,对GET方法无效.分析原因,应该是在执行第一个getParameter()的时候,Java将会按照编码分析所有的提交内容,