选择显示字体大小

java繁体中文处理完全攻略(一)

  许多人用 java 处理到中文资料时,常会出现乱码。关于 java 和中文兼容性的问题,实在让许多程序员为此伤透脑筋,相关的问题每隔几天就会出现在网络上。为了舒缓您紧蹙的眉头,我特别写了这系列文章,解说 java 牵涉到文字时的内部处理方式,供读者参考。 读完本系列文章之后,不求甚解者可以治标,充分理解者可以治本。本文贵在原理解说,别光是囫囵吞枣。

  快速解决之道

  如果你目前正遭遇到 java 和中文不兼容的问题,请你注意下面这几点,说不定问题能马上迎刃而解:

  1. 检查操作系统设定:先检查你的操作系统,确定国籍语言资料是「traditional chinese(taiwan)」。国籍语言资料的设定会影响 java 编译器与jre的判断。我之前就是因为国籍资料设定不正确,出了一堆 java 和中文不兼容的怪事。

  2. 更新 java 环境版本:改用最新版的 jdk,新版本的 jdk 说不定已经解决你原有的问题。请注意:某些 java ide 所用的编译器和 jre 是不兼容于中文的(我遇过这样的情形),你最好能把 java ide 的 jdk 指到新版的 jdk。另外,如果数据库取回的资料是乱码,换别套或者更新 jdbc 驱动程序试试看。

  如果还是无法解决,请详细阅读下面各小节的内容,仔细推敲你的错误所在。

  unicode、utf-16、utf-8

  java 内部处理字符使用的字序方式是 unicode,这是一种通行全球的编码方式。unicode 因为必须将中、韩、日、英、法、阿拉伯……等许多国家所使用的文字都纳入,目前已经包含了六万多个字符,所以 unicode 使用了 16 个位来为字符编码。因为 unicode 使用了 16 位编码,所以每个字符都用 16 位来储存或传输是很自然的事,这种储存或传输的格式称为 utf-16(是不是很像战斗机的名字)。如果你使用到的字符都是西方字符,那么你一定不会想用 utf-16 的格式,因为体积比 8 位的 latin-1(一种扩充 ascii 的编码)多了一倍。所以 unicode 另有一种储存或传输的格式,叫做 utf-8。utf-8 的格式在编码英文时,只需要 8 位,但是中文则是 24 位,所以中文字出现比例高的地方还是使用 utf-16 比较节省空间。java 的 class file(也就是 bytecode)中有一字段叫做常数区(constant pool),一律使用 utf-8 为字符编码。

  关于 unicode 的编码,请查阅「the unicode standard, version 3.0」一书(addison-wesley 出版);关于 utf-8 编码,请查阅「java i/o」一书的 399 页(o'reilly 出版)。关于 java class file 的格式与 constant pool,请查阅「java virtual machine」一书(o'reilly出版)。

  unicode 与繁体中文编码的互转

  虽然 java 内部完整地使用 unicode,但是你所使用的操作系统可不见得。以繁体中文版的 windows 98 来说,预设的编码方式是 ms950,这是一种兼容于 big 5的编码方式。字符串数据从 windows 一送进 jre,jre 的转码系统马上先把字符串编码由 ms950 转成 unicode,才能进行处理。字符串资料由 jre 一送出给 windows,jre 的转码系统马上先将其由 unicode 转成 ms950,操作系统才能处理。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons