UTF-16是Unicode的其中一个使用方式。 UTF是 Unicode/UCS Transformation Format,即把Unicode转做某种格式的意思。
它定义于ISO/IEC 10646-1的附录Q,而RFC2781也定义了相似的做法。
在Unicode基本多文种平面定义的字符(无论是拉丁字母、汉字或其他文字或符号),一律使用2字节储存。而在辅助平面定义的字符,会以代理对(surrogate pair)的形式,以两个2字节的值来储存。
UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节 (2字节) 储存,但UTF-16却无法相容于ASCII编码。
UTF-16的大尾序和小尾序储存形式都在用。一般来说,以Macintosh制作或储存的文字使用大尾序格式,以Microsoft或Linux制作或储存的文字使用小尾序格式。
为了弄清楚UTF-16文件的大小尾序,在UTF-16文件的开首,都会放置一个U+FEFF字符作为Byte Order Mark (UTF-16LE 以 FF FE 代表,UTF-16BE 以 FE FF 代表),以显示这个文字档案是以UTF-16编码,其中U+FEFF字符在UNICODE中代表的意义是ZERO WIDTH NO-BREAK SPACE,顾名思义,它是个没有宽度也没有断字的空白。
以下的例子有三个字符:“朱”(U+6731)、半角逗号 (U+002C)、“聿”(U+807F)。
| 使用 UTF-16 编码的例子 | ||||||
|---|---|---|---|---|---|---|
| 编码名称 | 编码次序 | 编码 | ||||
| BOM | "朱" | "," | "聿" | |||
| UTF-16LE | 小尾序 | 31 67 | 2C 00 | 7F 80 | ||
| UTF-16BE | 大尾序 | 67 31 | 00 2C | 80 7F | ||
| UTF-16 | 小尾序,包含BOM | FF FE | 31 67 | 2C 00 | 7F 80 | |
| UTF-16 | 大尾序,包含BOM | FE FF | 67 31 | 00 2C | 80 7F | |
UTF-16可看成是UCS-2的父集。在没有辅助平面字符前,UTF-16与UCS-2所指的是同一的意思。但当引入辅助平面字符后,就只称为UTF-16了。现在若有软件声称自己支援UCS-2编码,那其实是暗指它不能支援辅助平面字符的委婉语。
| Unicode 相关的条目 |
|---|
| Unicode字符列表 | Unicode联盟 | Unicode技术委员会 | ISO 10646 (通用字符集) | UTF-7 | UTF-8 | UTF-16 / UCS-2 | UTF-32 / UCS-4 |
| 基本多文种平面 | 辅助平面 | 中日韩统一表意文字 | CJKV | 表意文字小组 (IRG) | IICore | 完整Unicode编码表 |
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History