天天加油 - 助您成才
Java编程技术中汉字问题的分析及解决
您正在看的Java是:Java编程技术中汉字问题的分析及解决。
Java gb2big5 gb.txt big5.txt ,如果 gb.txt 的内容是“今天星期三”,则得到的文件 big5.txt 中的字符能够正确显示;而如果 gb.txt 的内容是“情人节快乐”,则得到的文件 big5.txt 中对应于“节”和“乐”的字符都是符号“?”(0x3F),可见 sun.io.ByteToCharGB2312 和 sun.io.CharToByteBig5 这两个基本类并没有编好。

  正如上例一样, Java 的基本类也可能存在问题。由于国际化的工作并不是在国内完成的,所以在这些基本类发布之前,没有经过严格的测试,所以对中文字符的支持并不像 Java Soft 所声称的那样完美。前不久,我的一位技术上的朋友发信给我说,他终于找到了 Java Servlet 中文问题的根源。两周以来,他一直为 Java Servlet 的中文问题所困扰,因为每面对一个含有中文字符的字符串都必须进行强制转换才能够得到正确的结果(这好象是大家公认的唯一的解决办法)。

  后来,他确实不想如此继续安分下去了,因为这样的事情确实不应该是高级程序员所要做的工作,他就找出 Servlet 解码的源代码进行分析,因为他怀疑问题就出在解码这部分。经过四个小时的奋斗,他终于找到了问题的根源所在。原来他的怀疑是正确的, Servlet 的解码部分完全没有考虑双字节,直接把 %XX 当作一个字符。(原来 Java Soft 也会犯这幺低级的错误!)

  如果你对这个问题有兴趣或者遇到了同样的烦恼的话,你可以按照他的步骤 对Servlet.jar 进行修改:

  找到源代码 HttpUtils 中的 static private String parseName ,在返回前将 sb(StringBuffer) 复制成 byte bs[] ,然后 return new String(bs,”GB2312”)。作上述修改后就需要自己解码了:

  HashTable form=HttpUtils .parseQueryString(request.getQueryString())或者

  form=HttpUtils.parsePostData(……)

  千万别忘了编译后放到 Servlet.jar 里面。

  关于 Java 中文问题的总结

  Java 编程语言成长于网络世界,这就要求 Java 对多国字符有很好的支持。 Java 编程语言适应了计算的网络化的需求,为它能够在网络世界迅速成长奠定了坚实的基础。 Java 的缔造者 (Java Soft) 已经考虑到 Java 编程语言对多国字符的支持,只是现在的解决方案有很多缺陷在里面,需要我们付诸一些补偿性的措施。而世界标准化组织也在努力把人类所有的文字统一在一种编码之中,其中一种方案是 ISO10646 ,它用四个字节来表示一个字符。当然,在这种方案未被采用之前,还是希望 Java Soft 能够严格地测试它的产品,为用户带来更多的方便。

  附一个用于从数据库和网络中取出 中文乱码的处理函数,入参是有问题的字符串,出参是问题已经解决了的字符串。

上一页  1 2 3 4 

排行

  1. 红旗Linux桌面6安装图解
  2. DELPHI数据库应用程序的开发环境
  3. 学好VC++的十大良好习惯
  4. 汇编DEBUG全过程跟踪
  5. 汇编中的管道操作方法(一)
  6. 汇编中的管道操作方法(二)
  7. 汇编中的管道操作方法(三)
  8. 汇编进程控制的实现方法(一)
  9. 汇编进程控制的实现方法(二)
  10. 汇编中使用定时器的方法
  11. 汇编复杂形状的窗口实例学习
  12. 汇编图形界面的操作
  13. 汇编菜单和加速键(一)
  14. 汇编菜单和加速键(二)
  15. 汇编语言中窗口的基本知识
  16. 汇编对话框和资源文件的使用
  1. VC防止窗口和控件闪烁的方法
  2. 基于Winsock API的VC网络编程实战
  3. 用VC实现动态改变Windows的显示特
  4. VC中利用MFC设计绘图程序初步
  5. vb的属性、方法和事件(一)
  6. vb的属性、方法和事件(二)
  7. vb控件的使用
  8. vb的控件数据
  9. vb控件简介
  10. vb程序设计
  11. vb的工具栏、对话框
  12. vb菜单在应用程序中的使用
  13. vb的用户界面
  14. vb对象的使用
  15. vb的datagrid控件的使用
  16. frame的用法
  1. VC防止窗口和控件闪烁的方法
  2. 基于Winsock API的VC网络编程实战
  3. 用VC实现动态改变Windows的显示特
  4. VC中利用MFC设计绘图程序初步
  5. 学好VC++的十大良好习惯
  6. DELPHI数据库应用程序的开发环境
  7. 汇编DEBUG全过程跟踪
  8. 汇编中的管道操作方法(一)
  9. 汇编中的管道操作方法(二)
  10. 汇编中的管道操作方法(三)
  11. 汇编进程控制的实现方法(一)
  12. 汇编进程控制的实现方法(二)
  13. 汇编中使用定时器的方法
  14. 汇编复杂形状的窗口实例学习
  15. 汇编图形界面的操作
  16. 汇编菜单和加速键(一)

最近更新

  • 推荐阅读
  • Java《Java编程技术中汉字问题的分析及解决》Java编程技术中汉字问题的分析及解决
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM