Unicode编码,简要解释UCS、UTF、BMP、.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unicode编码,简要解释UCS、UTF、BMP、 ? Unicode编码,简要解释UCS、UTF、BMP、BOM等名词(一)2011-07-16 21:02谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 、ucs-2、ucs-4、utf-16、utf-32、utf-8 是为整合全世界的所有语言文字而诞生的。任何文字在Unicode中都对应一个值,这个值称为代码点(code point)。代码点的值通常写成U+ABCD的格式。而文字和代码点之间的对应关系就是UCS-2(Universal Character Set coded in 2octets)。顾名思义,UCS-2是用两个字节来表示代码点,其取值范围为U+0000~U+FFFF。 为了能表示更多的文字,人们又提出了UCS-4,即用四个字节表示代码点。它的范围为UU+7FFFFFFF,其中UU+0000FFFF和UCS-2是一样的。 要注意,UCS-2和UCS-4只规定了代码点和文字之间的对应关系,并没有规定代码点在计算机中如何存储。规定存储方式的称为UTF(Unicode Transformation Format),其中应用较多的就是UTF-16和UTF-8了。 不难猜到,UTF-16是完全对应于UCS-2的,即把UCS-2规定的代码点通过Big Endian或Little Endian方式直接保存下来。UTF-16包括三种:UTF-16,UTF-16BE(Big Endian),UTF-16LE(Little Endian)。 UTF-16BE和UTF-16LE不难理解,而UTF-16就需要通过在文件开头以名为BOM(Byte Order Mark)的字符来表明文件是Big Endian还是Little Endian。 ABC这三个字符用各种方式编码后的结果如下: UTF-16BE00 41 00 42 00 43 UTF-16LE41 00 42 00 43 00 UTF-16(Big Endian)FE FF 00 41 00 42 00 43 UTF-16(Little Endian)FF FE 41 00 42 00 43 00 UTF-16(不带BOM)00 41 00 42 00 43 Windows平台下默认的Unicode编码为Little Endian的UTF-16(即上述的FF FE 41 00 42 00 43 00)。 UTF-16还能表示一部分的UCS-4代码点--U+10000~U+10FFFF。表示算法比较复杂,简单说明如下: 从代码点U中减去0x10000,得到U。这样U+10000~U+10FFFF就变成了0x00000~0xFFFFF。用20位二进制数表示U。U=yyyyyyyyyyxxxxxxxxxx将前10位和后10位用W1和W2表示,W1=110110 yyyyyyyyyy,W2=110111 xxxxxxxxxx,则W1=D800~DBFF,W2=DC00~DFFF。但是由于这种算法的存在,造成UCS-2中的U+D800~U+DFFF变成了无定义的字符UTF-32 UTF-32用四个字节表示代码点,这样就可以完全表示UCS-4的所有代码点,而无需像UTF-16那样使用复杂的算法。与UTF-16类似,UTF-32也包括UTF-32、UTF-32BE、UTF-32LE三种编码,UTF-32也同样需要BOM字符。仅用ABC举例: UTF-32BE00 00 00 41 00 00 00 42 00 00 00 43 UTF-32LE41 00 00 00 42 00 00 00 43 00 00 00 UTF-32(Big Endian)00 00 FE FF 00 00 00 41 00 00 00 42 00 00 00 43 UTF-32(Little Endian)FF FE 00 00 41 00 00 00 42 00 00 00 43 00 00 00 UTF-32(不带BOM)00 00 00 41 00 00 00 42 00 00 00 43 UTF-8 UTF-16和UTF-32的一个缺点就是它们固定使用两个或四个字节,这样在表示纯ASCII文件时会有很多00字节,造成浪费。而RFC3629定义的UTF-8则解决了这个问题。 UTF-8用1~4个字节来表示代码点。表示方式如下: UCS-2(UCS-4)位序列第一字节第二字节第三字节第四字节 U+0000.U+007F0xxxxxxx0xxxxxxx U+0080.U+07FF00000xxx-xxyyyyyy110xxxxx10yyyyyy U+0800.U+FFFFxxx

文档评论(0)

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

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

1亿VIP精品文档

相关文档