Unicode 字符编码

| 暂无评论 | 暂无引用通告

-->

Unicode 字符编码标准是固定长度的字符编码方案,它包含了世界上几乎所有现用语言的字符。

有关 Unicode 的信息可在最新版本的 The Unicode Standard 一书中找到,并且可从“Unicode 协会”(Unicode Consortium)Web 站点(www.unicode.org)中找到。

Unicode 使用两种编码格式:8 位和 16 位。缺省编码格式是 16 位,即每个字符是 16 位(两个字节)宽,并且通常显示为 U+hhhh,其中 hhhh 是字符的十六进制代码点。生成的 65000+ 代码元素足以用于 编码世界上主要语言的大多数字符,Unicode 标准还提供了一种扩展机制,允许编码一百多万个字符。扩展机制使用一对高位和低位代用字符来对扩展字符或补充字符进行编码。第一个(或高位)代用字符具有 U+D800 和 U+DBFF 之间的代码值,而第二个(或低位)代用字符具有 U+DC00 和 U+DFFF 之间的代码值。

UCS-2

“国际标准组织”(ISO)和“国际电工委员会”(IEC)标 准 10646(ISO/IEC 10646)指定了“通用多八位字节编码字符集”(UCS),该编码字符集有一个 16 位(双字节)版本(UCS-2)和一个 32 位(四字节)版本(UCS-4)。UCS-2 相当于没有代用字符的 Unicode 16 位格式。UCS-2 可以对 Unicode 版本 3.0 指令表中定义的所有(16 位)字符进行编码。两个 UCS-2 字符 - 一个高位代用字符后面跟随一个低位代用字符 - 需要对从 Unicode 版本 3.1 开始引入的每个新补充的字符进行编码。这些补充字符在原始的 16 位“基本多语言位面”(BMP 或位面 0)外部定义。

UTF-8

对于面向字节基于 ASCII 的应用程序和文件系统,16 位 Unicode 字符是引起问题的主要因素。例如,不明白 Unicode 的应用程序可能会将大写字符“A”(U+0041)的 8 个前导零位 误解为单字节 ASCII NULL 字符。

UTF-8(UCS 变换格式 8)是一种算法变换,它将定长 Unicode 字符变换为变长 ASCII 安全的字节字符串。在 UTF-8 中,ASCII 和控制字符 由通常的单字节代码表示,但其他字符变为双字节或更多字节。UTF 8 可以对非补充和补充字符进行编码。

UTF 16

ISO/IEC 10646 还定义了一种扩展技术,以使用两个 UCS-2 字符来编码某些 UCS-4 字符。此扩展技术称为 UTF-16,它相当于有代用字符的 Unicode 16 位编码格式。总之,UTF-16 字符指令集由所有 UCS-2 字符和可通过代用字符访问的附加的一百万字符构成。

当将 16 位 Unicode 字符序列化为字节时,某些处理器将最重要的字节放置在初始位置 (称为大尾数法排序),而其他的处理器则首先放置最不重要的字节(称为小尾数法排序)。Unicode 的缺省字节排序是大尾数法。

使用 UTF-8 格式的每个 UTF-16 字符的字节数可根据表 19 来确定。

表 19. UTF-8 的位分布
代码值

(二进制)

UTF-16

(二进制)

第一个字节

(二进制)

第二个字节

(二进制)

第三个字节

(二进制)

第四个字节

(二进制)

00000000

0xxxxxxx

00000000

0xxxxxxx

0xxxxxxx      
00000yyy

yyxxxxxx

00000yyy

yyxxxxxx

110yyyyy 10xxxxxx    
zzzzyyyy

yyxxxxxx

zzzzyyyy

yyxxxxxx

1110zzzz 10yyyyyy 10xxxxxx  
uuuuu

zzzzyyyy

yyxxxxxx

110110ww

wwzzzzyy

110111yy

yyxxxxxx

11110uuu

(其中 uuuuu = wwww+1)

10uuzzzz 10yyyyyy 10xxxxxx

在以上每一项中,u、w、x、y 和 z 串都是字符的位表示法。例如,U+0080 变换为二进制中的 11000010 10000000,而代用字符对 U+D800 U+DC00 变为 二进制中的 11110000 10010000 10000000 10000000。

暂无引用通告

发送引用通告网址: http://supersun.info/mt/mt-tb.cgi/600
如果您想引用这篇日记到您的Blog,请复制上面的链接,放置到您发表文章时的相应界面中。

发表评论

最新资源

  • IMG_1437.JPG
  • line.png
  • bar.png
  • perl_calander.jpg

关于此日记

此日记由 supersun 发表于 2007年5月 5日 22:42

此Blog上的上一篇日记冰糖银耳汤

此Blog上的下一篇日记引用样式

首页归档页可以看到最新的日记和所有日记。