unicode,UTF-8,UTF-16,UTF-32是什么,各有什么关系

1.Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。是为了解决传统的字符编码方案的局限而产生的。
2.UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,由Ken Thompson于1992年创建,现在已经标准化为RFC 3629。UTF-8用1到4个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
3.UTF-16是Unicode字符编码五层次模型的第三层:字符编码表(Character Encoding Form,也称为 “storage format”)的一种实现方式。即把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。Unicode字符的码位,需要1个或者2个16位长的码元来表示,因此这是一个变长表示。
4.UTF-32 (或 UCS-4)是一种将Unicode字符编码的协定,对每一个Unicode码位使用恰好32位元。其它的Unicode transformation formats则使用不定长度编码。因为UTF-32对每个字符都使用4字节,就空间而言,是非常没有效率的。特别地,非基本多文种平面的字符在大部分文件中通常很罕见,以致于它们通常被认为不存在占用空间大小的讨论,使得UTF-32通常会是其它编码的二到四倍。虽然每一个码位使用固定长定的字节看似方便,它并不如其它Unicode编码使用得广泛。
5.它们之间的关系:首先要注意的是unicode是编码字符集,而UTF-8、UTF-16、UTF-32是字符集编码;其次要注意unicode并不是用2个字节来表示字符串的。unicode1.0版本,所有的字符都是2个字节。但是现在的unicode编码在一百一十万左右,远远超过了2的16次方,也就是2个字节。所以,现在讲unicode编码是2个字节是错误的。Unicode 本身只规定了每个字符的数字编号是多少,并没有规定这个编号如何存储。UTF-8、UTF-16、UTF-32 都是 Unicode 的一种实现。

你可能感兴趣的:(unicode,UTF-8,UTF-16,UTF-32是什么,各有什么关系)