unicode 是容纳世界所有文字符号的国际标准编码,使用四个字节为每个字符编码。
utf 是英文 unicode transformation format 的缩写,意为把 unicode 字符转换为某种格式。utf 系列编码方案(utf-8、utf-16、utf-32)均是由 unicode 编码方案衍变而来,以适应不同的数据存储或传递,它们都可以完全表示 unicode 标准中的所有字符。目前,这些衍变方案中 utf-8 被广泛使用,而 utf-16 和 utf-32 则很少被使用。
utf-8 使用一至四个字节为每个字符编码,其中大部分汉字采用三个字节编码,少量不常用汉字采用四个字节编码。因为 utf-8 是可变长度的编码方式,相对于 unicode 编码可以减少存储占用的空间,所以被广泛使用。
utf-16 使用二或四个字节为每个字符编码,其中大部分汉字采用两个字节编码,少量不常用汉字采用四个字节编码。utf-16 编码有大尾序和小尾序之别,即 utf-16be 和 utf-16le,在编码前会放置一个 u feff 或 u fffe(utf-16be 以 feff 代表,utf-16le 以 fffe 代表),其中 u feff 字符在 unicode 中代表的意义是 zero width no-break space,顾名思义,它是个没有宽度也没有断字的空白。
utf-32 使用四个字节为每个字符编码,使得 utf-32 占用空间通常会是其它编码的二到四倍。utf-32 与 utf-16 一样有大尾序和小尾序之别,编码前会放置 u 0000feff 或 u 0000fffe 以区分。