JSP和Servlet对中文的处理过程(6)_JSP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:困扰JSP的一些问题与解决方法
如今每一个使用servlets的开发者都知道JSP,一种由Sun公司发明并花费大量精力加以推行并建构在servlet技术之上的web技术。JSP将servlet中的html代码脱离了出来,从而可以加速web应用开发

奇怪了!为什么把设成GB2312和ISO8859-1是一个样的,都能正确显示?因为表4表5中的第2步和第5步互逆,是相互“抵消”的。只不过当指定为ISO8859-1时,要增加第8步操作,殊为不便。

再看看不指定 时的情况。

表6 未指定Jsp-charset 时的变化过程

序号
步骤说明
结果

1
编写JSP源文件,且存为GB2312格式
D6 D0 CE C4

(D6D0=中 CEC4=文)

2
jspc把JSP源文件转化为临时JAVA文件,并把字符串按照ISO8859-1映射到Unicode,并用UTF格式写入JAVA文件中
C3 96 C3 90 C3 8E C3 84

3
把临时JAVA文件编译成CLASS文件
C3 96 C3 90 C3 8E C3 84

4
运行时,先从CLASS文件中用readUTF读出字符串,在内存中的是Unicode编码
00 D6 00 D0 00 CE 00 C4

(啥都不是!!!)

5
根据Jsp-charset=ISO8859-1把Unicode转化为字节流
D6 D0 CE C4

6
把字节流输出到IE中
D6 D0 CE C4

7
IE用发出请求时的页面的编码查看结果
视情况而定。如果是简体中文,则能正确显示,否则,需执行表5中的第8步


Servlet:源文件为JAVA文件,格式是GB2312,源文件中含有“中文”这两个汉字

如果=GB2312,=GB2312

表7 Compile-charset=Servlet-charset=GB2312 时的变化过程

序号
步骤说明
结果

1
编写Servlet源文件,且存为GB2312格式
D6 D0 CE C4

(D6D0=中 CEC4=文)

2
用javac –encoding GB2312把JAVA源文件编译成CLASS文件
E4 B8 AD E6 96 87 (UTF)

3
运行时,先从CLASS文件中用readUTF读出字符串,在内存中的是Unicode编码
4E 2D 65 87 (Unicode)

4
根据Servlet-charset=GB2312把Unicode转化为字节流
D6 D0 CE C4 (GB2312)

5
把字节流输出到IE中并设置IE的编码属性为Servlet-charset=GB2312
D6 D0 CE C4 (GB2312)

6
IE用“简体中文”查看结果
“中文”(正确显示)


如果=ISO8859-1,=ISO8859-1

表8 Compile-charset=Servlet-charset=ISO8859-1时的变化过程

序号
步骤说明
结果

1
编写Servlet源文件,且存为GB2312格式
D6 D0 CE C4

(D6D0=中 CEC4=文)

2
用javac –encoding ISO8859-1把JAVA源文件编译成CLASS文件
C3 96 C3 90 C3 8E C3 84 (UTF)

3
运行时,先从CLASS文件中用readUTF读出字符串,在内存中的是Unicode编码
00 D6 00 D0 00 CE 00 C4

(啥都不是!!!)

4
根据Servlet-charset=ISO8859-1把Unicode转化为字节流
D6 D0 CE C4

5
把字节流输出到IE中并设置IE的编码属性为Servlet-charset=ISO8859-1
D6 D0 CE C4 (GB2312)

6
IE用“西欧字符”查看结果
乱码(原因同表5)

7
改变IE的页面编码为“简体中文”
“中文”(正确显示)

分享:JavaBean 在jsp和serlvle中传递技术要点
javaBean 在jsp和serlvle中的传递技术要点 一、 初始化javaBean 1、 在jsp中 在上一段的代码中执行过程如下: ? 按照scope的参数寻找相同id的javabean,如果找到了就跳出该; ?

来源:模板无忧//所属分类:JSP教程/更新时间:2008-08-22
相关JSP教程