编码机

Unicode概述

发布时间:2022/8/24 19:40:29   

大多数读者应该对ASCI(AmericanStandardCodeforInformationInterchange,美国信息交换标准代码)不陌生,它是一套基于拉丁语言的字符编码方案,适用于英语和部分西欧语言。因ASCⅡ码是单字节的,故最多只能表示个字符,显然,对于非拉丁语言(如汉语、俄语拉伯语等)中的字符,ASCI码是无能为力的

因此,一部分国家在ASCI码基础之上制定了适合本国语言的编码标准,这些编码标准虽然能很好地处理拉丁语言和本国语言中的文字,但无法应对不兼容的多语言文字混合出现的情况。

为解决上述问题,统一码联盟在年发布了Unicode规范的第一个版本。Unicode旨在为世界上所有语言和文字中的每个字符都确定一个唯一的编码,以满足跨语言、跨平台进行文字的转换和处理的需求。在问世以来的二十多年里,Unicode已被广泛应用到可扩展标记语言(XML)、编程语言、操作系统和Emoji麦情符号等领域,目前最新的Unicode规范是12.00Beta版。

Unicode规范可分为编码和实现两个层次。目前,实际使用较为广泛的Unicode编码采用16位的编码空间,即每个字符占用2个字节,理论上共能表示个字符,基本满足各种语言的需要。

Unicode的实现则不同于编码,尽管每个字符的Unicode编码是确定的,但在实际传输过程中,因不同系统和平台的设计可能不一致以及出于节省空间的考虑,故而出现了Unicode编码的不同实现方式。Unicode的实现方式称为UTF(UnicodeTransformationFormat,Unicode转换格式)如UTF-8、UTF-16等,这些实现往往与每个国家和地区自己定义的编码标准不兼容。

Java在设计之初就考虑了语言的兼容性问题,因此采用了Unicodes编码。具体来说,Java源文件被编译为clas文件后,不管源文件采用何种编码存储,在clas文件中均被转换成Unicode编码。

当class.文件被执行时,Java虚拟机会自动探测所在操作系统的默认语言,并将clas文件中以Unicodes编码表示的字符和字符串转换成该语言使用的编码。也就是说,若操作系统(或用以显示运行结果的软件环境)所设置语言的编码与源文件的编码一致(或兼容),就能正确显示源文件中的字符和字符串,否则将出现乱码。有兴趣的读者可查阅有关Unicode和Java虚拟机规范的资料,初学者对此不必深究。



转载请注明:http://www.aideyishus.com/lkgx/1226.html
------分隔线----------------------------