UTF-32
字符集名称:UTF-32
UTF-32 (或UCS-4)是一种将Unicode字符编码的协定, 对每一个Unicode码位使用恰好32位元。 其它的Unicode transformation formats则使用不定长度编码。
因为UTF-32对每个字符都使用4字节,就空间而言,是非常没有效率的。 特别地,非基本多文种平面的字符在大部分文件中通常很罕见, 以致于它们通常被认为不存在占用空间大小的讨论,使得UTF-32通常会是其它编码的二到四倍。
虽然每一个码位使用固定长定的字节看似方便, 它并不如其它Unicode编码使用得广泛。 与UTF-8及UTF-16相比,它有点更容易遭截断。 即使使用了"定宽"字型, 除非在一些非常有限的清况下, 否则它并不会使得计算显示一个字串的宽度更加容易。 主要原因是, 存在着一个字符位置会有多于一种可能的码点(结合字符) 或一个码点用多于一个字符位置(如CJK表意字符)。 结合符号也意味着,文书编辑者不能不能将一个码点视同一个编辑上的单位。
历史
原本ISO 10646标准定义了一个32位元的编码形式,称作UCS-4, 使用通用字符集(UCS)的每一个字符, 会在0到十六进制的7FFFFFFF这样的字码空间中, 被表示成一个的32位元的码值。
UCS-4足以用来表示所有的Unicode的字码空间, 其最大的码位为十六进制的10FFFF,所以其空间约有百万个码位。 有些人认为保留如此大的字码空间却只为了对应这很小的码集是浪费的 所以一个新的编码UTF-32被提出来了。 UTF-32 是一个 UCS-4 的子集,使用32-位元的码值,只在0到10FFFF的字码空间。
UTF-32 原本是 UCS-4 的子集,但JTC1/SC2/WG2声明,所有未来对字符的指定都将会限制在BMP及其14\ 个补充平面,并移除先前在 E0 到 FF 平面的 60 到 7F 群的私用空间。
于是就现状而言,除了 UTF-32 标准包含额外的 Unicode 意涵,UCS-4 和 UTF-32 大体是相同的。