jsp编码(2)

来源:互联网 发布:大话设计模式java pdf 编辑:程序博客网 时间:2024/06/08 04:38

13.3 Java及Web中的编码
13.3.1 Java中的编码
Java的内核是Unicode的,也就是说,在程序处理 字符时是用Unicode来表示字符的。从概念上讲,在Java中,字符串是由Unicode字符所组成的一个序列。但是文件和流的保存方式是使用字节流 的。在Java的基本数据类型中,char是Unicode的,而byte是字节,因此,在不同的环节,Java要对字节流和char进行转换。这种转换 发生时如果字符集的编码选择不当,就会出现乱码问题。

13.3.2 Web中的编码
对于Web组件,必须考虑三种编码:请求(Request)编码、页面(JSP Pages)编码和响应(Response)编码。

l 请求编码

是一种字符编码,在这种编码中会解释传入请求中的参数。现在,许多浏览器没有发送具有Content-Type头的请求编码限定符,也是就说没有指定用哪种编码发送请求数据,在这种情形下,Web容器比如Tomcat就会使用默认的编码ISO8859-1来解析请求数据。

l 页面编码

决 定页面本身字符的编码,它由页指令的pageEncoding属性决定,如果没有设置该属性,则由页指令的contentType属性的charset值 决定,如果这些都没有指定,就把ISO8859-1作为页面编码。为了便于理解,举一个具体的例子:在一个记事本中编写一个JSP文件,在页指令中指定 contentType="text/       html; charset=UTF-8"而不设置pageEncoding属性,则页编码就是UTF-8,保存文件时编码要选择UTF-8,否则,当页面中包含有中 文字符时Web服务器就会报“Cannot read file”的错误。如果指定pageEncoding为GBK则保存时字符可以选择ANSI编码(操作系统用来保存文件的默认编码)来保存文件。

l 响应编码

是 Web组件生成的文本响应的字符编码。对响应编码必须恰当地进行设置,这样就可以为指定的区域设置正确的呈现字符。Web服务器从下面几个来源为JSP页 面设置初始的响应编码:页指令的contentType属性的charset值;页指令的pageEncoding属性指定的编码等。如果都没有指定,则 会把ISO8859-1用做默认的响应编码。

有了这些基本的认识,我们就可以来讨论JSP中的乱码问题了。

 

 

-----------------------------------------

www.taobke.net 淘宝购物