快速业务通道

深入剖析JSP和Servlet对中文的处理

作者 凌众技术 来源 互联网 浏览 发布时间 2012-01-14

根据Jsp-charset=ISO8859-1把Unicode转化为字节流 D6 D0 CE C4 
  6 把字节流输出到IE中 D6 D0 CE C4 
  7 IE用发出请求时的页面的编码查看结果 视情况而定。如果是简体中文,则能正确显示,否则,需执行表5中的第8步

 

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

  如果<Compile-charset>=GB2312,<Servlet-charset>=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用“简体中文”查看结果 “中文”(正确显示)

  如果<Compile-charset>=ISO8859-1,<Servlet-charset>=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的页面编码为“简体中文” “中文”(正确显示)

  如果不指定Compile-charset或Servlet-charset,其默认值均为ISO8859-1。

  当Compile-charset=Servlet-charset时,第2步和第4步能互逆,“抵消”,显示结果均能正确。读者可试着写一下Compile-charset<>Servlet-charset时的情况,肯定是不正确

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号