Java编码中文问题研究及解决方案.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java编码中文问题研究及解决方案

Java编码中文问题研究及解决方案 计算机系统应用200.5年第11期 Java编码中文问题研究及解决方案 ResearchandResolutiononChineseProblemBasedonJava 冯金辉朱淼良(杭州浙江大学计算机科学与技术学院310027) 摘要:本文首先研究了中文问题产生的根源,然后详细分析了各种编码方式及产生中文问题的原因.接着介绍了 系统的各个层次可能产生问题的表现以及原因.最后提出了解决中文问题的原则以及具体的解决方案. 关键词:编码解码ISO8859UnicodeUTF一8 1引言 现在Java编程语言已经广泛应用于互联网世界, 早在Sun公司开发Java语言的时候,就已经考虑到对 非英文字符的支持了.Sun公司公布的Java运行环 境(JRE)本身就分英文版和国际版,其中国际版支持非 英文字符.然而,因为中文字符集不只一个,而且不同 的操作系统对中文字符的支持也不尽相同,所以会有 许多和汉字编码处理有关的问题在我们进行应用开发 中困扰着我们.有很多关于这些问题的解答,但是很 多都只是针对某种特定开发环境或者特定情况的解决 方法,在实际的应用过程中,需要使用者去一一尝试, 才能够得到正确的解决方案,这就大大降低了使用这 些解决方法的效率.本文将从汉字编码常识出发,分 析Java中文问题,并提出解决问题的原则,使读者能 够明白具体情况下应该如何处理,然后提出一系列的 具体解决方案,希望对大家解决这个问题有所帮助. 2Java的编码方式 Java中的字符数据是16位无符号型数据,它表示 Unicode集,而不仅仅是ASCII集.它解决了WWW上 很多的程序设计问题,比如说低成本的国际化(Inter— nationa1),然而Java所处理的信息,绝大多数都是英 文,对它们来说7位的ACSII码已经足够了,而Unicode 却需要双倍的空间,所以Java的这种兼顾各种语言的 做法既浪费了存储资源又降低了效率.而Java编程 中中文问题的出现,归根结底是由于在Java的各个不 同的编码方式之间进行字符转换的时候出错.因此, 了解Java使用的各种编码方式,有助于我们解决Java 78实践经验Prac6calExperience 中文问题.在Java中常用的编码方式有1508859—1, Unicode,GB2312,GBK,UTF一8. (1).ISO8859—1 ASCII编码方式是单字节内码,它使用了单字节8 位中的后7位,而第一位都为O.为了应付越来越多的 字符需要,如拉丁字母等,于是在AsCII的基础上扩展 了1508859—1编码.1508859—1同样是单字节内码, 当ISO8859—1编码的字节首位为O时,字符可以一一 映射到ASCII编码字符集.而当ISO8859—1编码的字 节首位为1时,则可以增加128个字符. (2).Unicode Unicode最初是双字节内码.它的出现是为了让 每一个字符有唯一的表示形式.Unicode编码是 ISO8859—1的扩展.当Unicode编码的高位字节为O 时,低位字节等同于ISO8859—1编码.这 时候,去除Unicode编码的高位字节,其编码就转化为 ISO8859—1编码.这种方式适用于基于ISO8859—1 编码方式的西欧语系环境. (3).GB2312 GB2312—80是双字节内码,它是在国内计算机汉 字信息技术发展初始阶段制定的,其中包含了大部分 常用的一,二级汉字,和9区的符号.该字符集是几乎 所有的中文系统和国际化的软件都支持的中文字符 集,这也是最基本的中文字符集.其编码范围是高位 0xal一0xfe,低位也是0xal一0xfe;汉字从0xb0al开 始,结束于Oxf7fe. (4).GBK GBK也是双字节内码,是GB2312—80的扩展,是 2005年第11期计算机系统应用 向上兼容的.它包含了20902个汉字,其编码范围是 0x8140一Oxfefe,剔除高位0x80的字位.其所有字符 都可以一对一映射到Unicode2.0,也就是说JAVA实 际上提供了对GBK字符集的支持.这是现阶段Win— dows和其它一些中文操作系统的缺省字符集. (5).GB18030—2000(GBK2K) GB1lt;2K是变长内码,它在GBK的基础上进一步扩 展了汉字,增加了藏,蒙等少数民族的字形.GBK2K从 根本上解决了字位不够,字形不足的问题.它也是未 来的中文国家标准. (6).UTF一8 UTF一8是变长内码,它提供了一种简便而向后兼 容的方法.它的出现是为了提高效率.当操作的文本 基本都是规则的ASCII编码时,使用双字节的Unicode 编码显得效率很低.因此Java字节码内的字符串使 用了UTF

您可能关注的文档

文档评论(0)

beoes + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档