Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1444936
  • 博文数量: 295
  • 博客积分: 10051
  • 博客等级: 上将
  • 技术积分: 3850
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-11 08:50
文章分类

全部博文(295)

文章存档

2011年(1)

2009年(4)

2008年(290)

我的朋友

分类: 系统运维

2008-04-19 15:20:15

UTF-16

UTF-16是Unicode的其中一个使用方式。 UTF是 Unicode Translation Format,即把Unicode转做某种格式的意思。

它定义于ISO/IEC 10646-1的附录Q,而RFC2781也定义了相似的做法。

在Unicode基本多文种平面定义的字符(无论是拉丁字母、汉字或其他文字或符号),一律使用2字节储存。而在辅助平面定义的字符,会以代理对(surrogate pair)的形式,以两个2字节的值来储存。

UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法兼容于ASCII编码。

UTF-16的编码模式

UTF-16的大尾序和小尾序储存形式都在用。一般来说,以Macintosh制作或储存的文字使用大尾序格式,以Microsoft或Linux制作或储存的文字使用小尾序格式。

为了弄清楚UTF-16文件的大小尾序,在UTF-16文件的开首,都会放置一个U+FEFF字符作为Byte Order Mark (UTF-16LE 以 FF FE 代表,UTF-16BE 以 FE FF 代表),以显示这个文字档案是以UTF-16编码。

以下的例子有四个字符:“朱”、半角逗号、“聿”、“𨮁”。

使用 UTF-16 编码的例子
编码名称 编码次序 编码
UTF-16LE 小尾序 31 67, 2C 00, 7F 80, 62 D8 81 DF
UTF-16BE 大尾序 67 31, 00 2C, 80 7F, D8 62 DF 81
UTF-16 小尾序,包含BOM FF FE, 31 67, 2C 00, 7F 80, 62 D8 81 DF
UTF-16 大尾序,包含BOM FE FF, 67 31, 00 2C, 80 7F, D8 62 DF 81

UTF-16 与 UCS-2 的关系

UTF-16可看成是UCS-2的父集。在没有辅助平面字符前,UTF-16与UCS-2所指的是同一的意思。但当引入辅助平面字符后,就只称为UTF-16了。现在若有软件声称自己支援UCS-2编码,那其实是暗指它不能支援辅助平面字符的委婉语。

阅读(2551) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~