java 中文解决大全 Abstract:本文深入分析了Java 程序设计中Java 编译器对java 源文件和JVM 对 class 类文件的编码/解码过程,通过此过程的解析透视出了Java 编程中中文问题产生的根本原因,最后给出了建议的最优化的解决Java 中文问题的方法。 1. 中文问题的来源 计算机最初的操作系统支持的编码是单字节的字符编码,于是,在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理。随着计算机的发展,为了适应世界其它民族的语言(当然包括我们的汉字),人们提出了UNICODE 编码,它采用双字节编码,兼容英文字符和其它民族的双字节字符编码,所以,目前,大多数国际性的软件内部均采用UNICODE 编码,在软件运行时,它获得本地支持系统(多数时间是操作系统)默认支持的编码格式,然后再将软件内部的UNICODE 转化为本地系统默认支持的格式显示出来。Java 的 JDK 和 JVM 即是如此,我这里说的JDK 是指国际版的JDK, 我们大多数程序员使用的是国际化的JDK 版本,以下所有的JDK 均指国际化的JDK 版本。我们的汉字是双字节编码语言,为了能让计算机处理中文,我们自己制定的gb2312、 GBK、 GBK2K 等标准以适应计算机处理的需求。所以,大部分的操作系统为了适应我们处理中文的需求,均定制有中文操作系统,它们采用的是GBK,GB2312 编码格式以正确显示我们的汉字。如:中文Win2K 默认采用的是GBK 编码显示,在中文WIN2k 中保存文件时默认采用的保存文件的编码格式也是GBK 的, 即, 所有在中文WIN2K 中保存的文件它的内部编码默认均采用GBK 编码,注意:GBK 是在GB2312 基础上扩充来的。 由于Java 语言内部采用UNICODE 编码,所以在JAVA 程序运行时,就存在着一个从UNICODE 编码和对应的操作系统及浏览器支持的编码格式转换输入、输出的问题,这个转换过程有着一系列的步骤,如果其中任何一步出错,则显示出来的汉字就会出是乱码,这就是我们常见的JAVA 中文问题。 同时,Java 是一个跨平台的编程语言,也即我们编写的程序不仅能在中文windows 上运行,也能在中文Linux等系统上运行,同时也要求能在英文等系统上运行(我们经常看到有人把在中文win2k 上编写的JAVA 程序,移植到英文Linux上运行)。这种移植操作也会带来中文问题。 还有,有人使用英文的操作系统和英文的IE 等浏览器,来运行带中文字符的程序和浏览中文网页,它们本身就不支持中文,也会带来中文问题。 几乎所有的浏览...