PAGEENCODING与CONTEXTTYPE的一点总结

来源:互联网 发布:淘宝网水刀拼花椭圆形 编辑:程序博客网 时间:2024/05/02 00:03

以前每次遇到这样的问题,每次都不当回事,吃过不少苦头。今天特意在网上搜了点东西,学习了一下,解决了问题,并记录下来,方便以后查阅。


保存时弹出问题的内容如下:
    save could not be completed.
    Reason:
    Some characters could not be mapped using "ISO-8859-1" character encoding.
    Either change the encoding or remove the characters which are not supported by the "ISO-8859-1" character encoding.
    译文:
    不能被保存。
    原因:有些字符与"ISO-8859-1"编码方式不匹配。要么改变编码方式,要么去掉不被"ISO-8859-1"编码方式所支持的字符。
    分析之后明白了,原来“一缕阳光”中文字符不被“ISO-8859-1”支持,同样,把pageEncoding改成“GBK”后“Powered by: BlogJava Copyright © ”又不被“GBK”支持。最后把pageEncoding改成“UTF-8”后问题解决了。此外,有时打开导入或copy到文件里的java代码,代码里的中文是乱码,这时需要把项目属性里的Text file encoding改成“UTF-8”就ok了


pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。 
     众所周知,JSP在服务器上是要先被编译成Servlet的。pageEncoding="UTF-8"的作用就是告诉JSP编译器在将JSP文件编译成Servlet时使用的编码。通常,在JSP内部定义的字符串(直接在JSP中定义,而不是从浏览器提交的数据)出现乱码时,很多都是由于该参数设置错误引起的。例如,你的JSP文件的Properties-Text file encoding中是以GBK为编码保存的,而在JSP页面的page标签中却指定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")的作用是指定对服务器响应进行重新编码的编码。 
     服务器在将数据发送到浏览器前,对数据进行重新编码时,使用的就是该编码。