
UTF-16
UTF-16是Unicode字元编码五层次模型的第三层:字元编码表(Character Encoding Form,也称为 "storage format")的一种实现方式。即把Unicode字元集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。Unicode字元的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。
基本介绍
- 中文名:UTF-16
- 解释:Unicode字元编码五层次模型
- 定义于 : ISO/IEC 10646-1的附录Q
- 在用形式:UTF-16的大尾序和小尾序
简介
UTF-16是Unicode的其中一个使用方式。 UTF是 Unicode TransferFormat,即把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,顾名思义,它是个没有宽度也没有断字的空白。
相关联繫
UTF-16与UCS-2的关係
UTF-16可看成是UCS-2的父集。在没有辅助平面字元(surrogate code points)前,UTF-16与UCS-2所指的是同一的意思。但当引入辅助平面字元后,就称为UTF-16了。现在若有软体声称自己支援UCS-2编码,那其实是暗指它不能支援在UTF-16中超过2bytes的字集。对于小于0x10000的UCS码,UTF-16编码就等于UCS码。