jspservlet编码原理

it2022-05-05  120

转自:http://janwer.iteye.com/blog/150226

 

 首先,说说 JSP/Servlet 中的几个编码的作用   在 JSP/Servlet 中主要有以下几种设置编码的方式:

pageEncoding ="UTF-8"(JSP)contentType = "text/html;charset=UTF-8"(JSP)request.setCharacterEncoding("UTF-8")(JSP,Servlet)response.setCharacterEncoding("UTF-8")(JSP,Servlet)

 

  其中前两个只能用于JSP 中,而后两个可以用于 JSP 和 Servlet 中。  1、pageEncoding="UTF-8" 的作用是设置 JSP 编译成 Servlet 时使用的编码  众所周知,JSP 在服务器上是要先被编译成 Servlet 的。pageEncoding="UTF-8" 的作用就是告诉 JSP 编译器在将 JSP 文件编译成Servlet 时使用的编码。通常,在 JSP 内部定义的字符串(直接在 JSP 中定义,而不是从浏览器提交的数据)出现乱码时,很多都是由于该参数设置错误引起的。例如,你的JSP 文件是以GBK 为编码保存的,而在JSP 中却指定pageEncoding="UTF-8" ,就会引起JSP 内部定义的字符串为乱码。  另外,该参数还有一个功能,就是在JSP中不指定 contentType 参数,也不使用response.setCharacterEncoding 方法时,指定对服务器响应进行重新编码的编码。  2、contentType="text/html;charset=UTF-8" 的作用是指定对服务器响应进行重新编码的编码  在不使用 response.setCharacterEncoding 方法时,用该参数指定对服务器响应进行重新编码的编码。

 

  3、 request.setCharacterEncoding("UTF-8") 的作用是设置对“客户端请求”进行重新编码的编码。  该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。  4、 response.setCharacterEncoding("UTF-8") 的作用是指定对“服务器响应”进行重新编码的编码。  服务器在将数据发送到浏览器前,对数据进行重新编码时,使用的就是该编码。

 

 

 

  其次,要说一说浏览器是怎么样对接收和发送的数据进行编码的 

 

  response.setCharacterEncoding("UTF-8") 的作用是指定对服务器响应进行重新编码的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。所以在无论你在 JSP 中设置 response.setCharacterEncoding("UTF-8") 或者response.setCharacterEncoding ("GBK") ,浏览器均能正确显示中文(前提是你发送到浏览器的数据编码是正确的,比如正确设置了pageEncoding 参数等)。可以做个实验,在JSP 中设置response.setCharacterEncoding("UTF-8") ,在 IE 中显示该页面时,在 IE 的菜单中选择 " 查看 (V)"-->" 编码(D)" 中可以查看到是 " Unicode(UTF-8)" ,而在在 JSP 中设置response.setCharacterEncoding("GBK") ,在 IE 中显示该页面时,在 IE 的菜单中选择 " 查看(V)--> 编码(D)" 中可以查看到是" 简体中文(GB2312)" 。  浏览器在发送数据时,对 URL 和参数会进行 URL 编码,对参数中的中文,浏览器也是使response.setCharacterEncoding 参数来进行 URL 编码的。以百度和 GOOGLE 为例,如果你在百度中搜索"汉字",百度会将其编码为"

转载请注明原文地址: https://win8.8miu.com/read-23707.html

最新回复(0)