Java中文乱码转码问题总结.docVIP

  • 7
  • 0
  • 约4.77千字
  • 约 4页
  • 2017-06-12 发布于北京
  • 举报
Java 中文乱码转码问题总结 2009-05-05 17:04:08|??分类:?java|字号?订阅 ??? 在JSP/Servlet中主要有以下几个地方可以设置编 码,pageEncoding=UTF-8、contentType=text/html;charset=UTF-8、equest.setCharacterEncoding(UTF-8)和response.setCharacterEncoding(UTF-8),其中前两个只能用于JSP中,而后两个可以用于JSP和Servlet 中。 (注释:pageEncoding 在JSP标准的语法中,如果pageEncoding粜源嬖冢敲碕SP页面的字符编码方式就由pageEncoding决定,否则就由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1。 meta http-equiv=Content-Type content=text/html; charset=UTF-8 为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。出现了乱码。) 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为例,如果你在百度中搜索汉字,百度会将其编码为%BA%BA%D7%D6。而在GOOGLE中搜索汉字,GOOGLE会将其编 码为%E6%B1%89%E5%AD%97,这是因为百度的response.setCharacterEncoding参数为GBK,而 GOOGLE的的response.setChar

文档评论(0)

1亿VIP精品文档

相关文档