扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
摘要
大多数的J2EE服务器都能很好地支持多字节语言(如中文和日文),但这些J2EE服务器和浏览器在支持的方式上是有区别的。当开发者将一些中文(或日文)本地化应用从一种服务器迁移到另一种服务器上时,通常会遇到多字节问题。本文分析了有关多字节字符问题的根源,并给出了一些解决方案和指导原则。
中文是世界上最复杂、最完备的语言之一。有时我会为自己是个中国人而感到幸运,特别是当我看到我的一些外国朋友为学习这门语言(尤其是写汉字)而绞尽脑汁的时候。可当我用J2EE开发本地化Web应用时,又会感到很不幸。下面我就说说为什么。
尽管Java平台和大多数J2EE服务器都能很好地支持国际化,我在开发中文或日文应用时仍会遇到许多有关多字节字符方面的问题:
·编码和字符集之间有什么区别?
·为什么多字节字符应用从一种操作系统迁移到另一种上时显示会有差异?
·为什么多字节字符应用从一种应用服务器迁移到另一种上时显示会有差异?
·为什么我的多字节字符应用在IE浏览器里显示正常,可到了Mozila浏览器里却又不行?
·为什么以UTF-16(通用转换格式)编码的应用在大多数J2EE服务器上都不能很好地显示?
如果你也有同样的问题,本文将有助于你找到答案。
字符的基础知识
字符在计算机出现之前就早已存在。大约3,000年前,古代中国就出现了一些特殊的文字符号(即甲骨文)。这些文字符号有特定的形状和含义,它们中的大部分都有名字和发音。所有这些文字符号汇集成了字码表,一套从属于特定语言的独特字符集合,它们与计算机没有任何关系。几千年过去了,许多语言都在发展,数以千计的字符被创造出来。如今我们要将所有这些字符都数字化为0和1,这样计算机才能理解它们。
用键盘输入单词的时候要用到字符输入法。对于简单的字符,键盘和字符间存在着一对一的映射关系;而对于较复杂的语言,需要多次敲击键盘才能输入一个字符。
在你能从屏幕上看到字符之前,操作系统必须先将字符存放在内存里。实际上操作系统在字码表的字符与一系列非负整数之间定义了一一对应的关系,它们被存放在内存里并被操作系统调用,这些整数被称为字符代码。
字符可以用文件存储或通过网络传输。软件用字符编码来定义每个字符的字符代码与八进制序列数之间的对应方法(算法)。有些字符代码对应一个字节,如ASCII码;还有一些字符代码需要对应两个或更多的字节(如中文和日文),这种对应关系依赖于不同的字符编码方式。 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。