没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
深入剖析 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 等浏览器,来运行带中文字符的程序和浏览中文网页,它
们本身就不支持中文,也会带来中文问题。
有,几乎所有的浏览器默认在传递参数时都是以 UTF-8 编码格式来传递,而不是按中文编码传递,所
以,传递中文参数时也会有问题,从而带来乱码现象。
总之,以上几个方面是 JAVA 中的中文问题的主要来源,我们把以上原因造成的程序不能正确运行而产
生的问题称作:JAVA 中文问题。
2、JAVA 编码转换的详细过程
我们常见的 JAVA 程序包括以下类别:
*直接在 console 上运行的类(包括可视化界面的类)
*JSP 代码类(注:JSP 是 Servlets 类的变型)
*Servelets 类
*EJB 类
*其它不可以直接运行的支持类
这些类文件中,都有可能含有中文字符串,并且我们常用前三类 JAVA 程序和用户直接交互,用于输出
和输入字符,如:我们在 JSP 和 Servlet 中得到客户端送来的字符,这些字符也包括中文字符。无论这些
JAVA 类的作用如何,这些 JAVA 程序的生命周期都是这样的:
*编程人员在一定的操作系统上选择一个合适的编辑软件来实现源程序代码并以.java 扩展名保存在操
作系统中,例如我们在中文 win2k 中用记事本编辑一个 java 源程序;
*编程人员用 JDK 中的 javac.exe 来编译这些源代码,形成.class 类(JSP 文件是由容器调用 JDK 来编
译的);
还
资源评论
sldeinaldfj
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功