UNICODE使任何语言的字符都可以为机器更容易的接受,UNICODE由UC(UNICODE协会)管理并接受其技术上的修改。包括JAVA、LDAP、XML这样的技术标准中均要求得到UNICODE的支持。UNICODE的字符被成为代码点(CODE POINTS),用U后面加上XXXX来表示,其中,X为16进制的字符。
对于英文来说,ascii码 0-127就足以代码所有字符,对于中文而言,则必须使用两个字节(byte)来代表一个字符,具第一个字节必须大于127(所以我们有许程序判断中文都是以ascii码大于127作为条件)。以上用两个字节来表示一个中文的方式,在习惯上称为双字节(即DBCS: Double-Byte Character Set),而相对之下,英文的字符码就称为单字节SBCS(Single-Byte Character Set)。
虽然双字节(DBCS)足以解决中英文字符混合使用情况,但对于不同字符系统而言,必须经过字符码转换,非常麻烦。例如:中英文混合情况,日文,韩文等等。为解决这个问题,国际标准组织于1984年4月成立ISO/IEC JTC1/SC2/WG2工作组。针对各国文字、符号进行统一性编码。1991年美国跨国公司成立Unicode Consortium。并于1991年10月与WG2达成协议。采用同一编码字集。目前Unicode是采用16位编码体系。其字符集内容与ISO10646的BMP(Basic Multilingual Plane)相同。Unicode于1992年6月通过DIS(Draf International Standard)。目前版本V2.0于1996公布。内容包含符号6811个。汉字20902个。韩文拼音11172个。造字区6400个。保留20249个。共计65534个。
随着国际互联网的迅速发展。要求进行数据交换的需求越来越大。不同的编码体系越来越成为信息交换的障碍。而且多种语言共存的文档不断增多。单靠代码页已很难解决这些问题。于是UNICODE应运而生。
UNICODE有双重含义。首先UNICODE是对国际标准ISO/IEC10646编码的一种称谓(ISO/IEC10646是一个国际标准。亦称大字符集。它是ISO于1993年颁布的一项重要国际标准。其宗旨是全球所有文种统一编码)。另外它又是由美国的HP、Microsoft、IBM、Apple等大企业组成的联盟集团的名称。成立该集团的宗旨就是要推进多文种的统一编码。
UNICODE同现在流行的代码页最显著不同点在于:UNICODE是两字节的全编码。对于ASCII字符它也使用两字节表示。代码页是通过高字节的取值范围来确定是ASCII字符。还是汉字的高字节。如果发生数据损坏。某处内容破坏。则会引起其后汉字的混乱。UNICODE则一律使用两个字节表示一个字符。最明显的好处是它简化了汉字的处理过程。
UNICODE使用平面来描述编码空间。每个平面分为256行。256列。相对于两字节编码的高低两个字节。
UNICODE的第一个平面。称为Basic Multilingual Plane(基本多文种平面)。简称BMP。由于BMP仅用两个字节表示。所以倍受青睐。
Unicode的最初目标。是用1个16位的编码来为超过65000字符提供映射。但这还不够。它不能覆盖全部历史上的文字。也不能解决传输的问题(implantation head-ache’s)。尤其在那些基于网络的应用中。因此。Unicode用一些基本的保留字符制定了三套编码方式。它们分别是UTF-8,UTF-16和UTF-32。正如名字所示。在UTF-8中。字符是以8位序列来编码的。用一个或几个字节来表示一个字符。这种方式的最大好处。是UTF-8保留了ASCII字符的编码做为它的一部分。例如。在UTF-8和ASCII中。“A”的编码都是0x41.UTF-16和UTF-32分别是Unicode的16位和32位编码方式。考虑到最初的目的。通常说的Unicode就是指UTF-16。
多年来。计算机普遍采用美国信息交换标准代码(American Standard Code for Information Interchange,简称ASCII码)来表示字符。这些字符可以是字母。数字。标点符号和控制符。用这种编码来表示英文在内的字符不成问题的。但要表示其它语言文字如。阿拉伯文。中文。日文。维文。哈文…必须进行扩充。在1987年。Xerox Palo Alto研究中心的Joe Becker和Lee Collins。以及Apple公司的Mark Davis试图研究一种适用于多文种处理的字符编码。这种编码很快就得到了许多大公司的支持。这些公司都派代表参加Unicode研究组。Unicode的研究得到了较快的进展。由于Unicode集团的成员都是世界上的主要系统及软件制造商。所以Unicode很快就成为事实上的工业标准。
基于Unicode的系统允许使用65000个不同的字符。足以善盖世界所有语言的所有字母。外加数千种符号。
其中。General Scripts区单独收录了19种语言文字。包括ASCII,Latin1,Greek,Cyrillic,Armenian,Hedrew,Arabic,Devanagari,Bengali ,Gurmukhi,Gujarati,Oriya,Tamil,Telugu,Kannada,Malayalam,Thai,Lao,Tibetan,Georgian等语言文字之外。还包括汉语。日语和朝鲜语中的所有大量字符。
Unicode是一种定长的2B多文种字符集编码。它试图善盖现有的有关国家和地区的标准。包括GB2312,CNS11643,JIS 0208和KSC 5601等。Unicode可以表示混合文字资料。也可以保证以前的ISO 10646。
Unicode的特点是:
不管哪一国的字符码均以两个Byte表示,例如”A”在Unicode则是16进制 41和00的组合,即4100,高位41(转换为Ascii码即是65=A),Windows NT/2000以Unicode来表示字符集,例如你可以看到MS SQL Server中产生的SQL文件可以选择是以Unicode来保存还是以普通格式来保存,如果你以Unicode保存,则在95/98平台许多软件均无法正确读出其格式。
同时你还可以注意到95/98中API定义,许多名称结尾是有一个A的,例如
WriteProfileStringA
而在NT/2000操作系统中,提供了两套API,另外一个命令是WriteProfileStringW,以W 结尾的API只适用于NT / 2000。(在NT中使用以W结尾的API函数效率比A结尾的要快,因为省去了Unicode和DBCS/SBCS的转换过程)
这样我们经常要用到的判断字符串长度的函数,在NT和95/98下执行结果不同,如下:(下面代码适合于VB, ASP)
95/98中:
len(”abc中国”) 返回 7 (因为每个中文作为两个Ascii码来看)
NT/2000中:
len(”abc中国”) 返回 5 (因为每个字符都作为一个Unicode来看)
unicode编码是什么?
Unicode是一个工业标准。提出Unicode的目的是为了能够用一致的方式表示所有地球语言所包含的文本和符号,从而能够被计算机以一致的方式进行处理。
Unicode字符能够用任何一种叫做Unicode
Transformation
Formats的方案进行编码。
平时说的UTF-8、UTF-16、UTF-32等,是Unicode的具体的字符编码方式。
Unicode是一种字符编码方案,它为每种语言中的每个字符都设定了统一唯一的二进制编码,以实现跨语言、跨平台进行文本转换、处理的要求。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000至0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。
Unicode 编码表
BMP SMP SIP SSP
0000—0FFF 8000—8FFF 10000—10FFF 20000—20FFF 28000—28FFF E0000—E0FFF
1000—1FFF 9000—9FFF 21000—21FFF 29000—29FFF
2000—2FFF A000—AFFF 12000—12FFF 22000—22FFF 2A000—2AFFF
3000—3FFF B000—BFFF 23000—23FFF
4000—4FFF C000—CFFF 24000—24FFF 2F000—2FFFF
5000—5FFF D000—DFFF 1D000—1DFFF 25000—25FFF
6000—6FFF E000—EFFF 26000—26FFF
7000—7FFF F000—FFFF 1F000—1FFFF 27000—27FFF
以上就是关于Unicode字符是什么全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!