Unicode、UTF-8、UTF-16、UTF-32的区别
文章类型:html
发布者:admin
发布时间:2023-04-13
一:Unicode
1:全称 Unicode Translation Format,又叫做统一码、万国码、单一码。
2:是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
3:常见的是UTF-8、UTF-16、UTF-32和USC-2。
二:UTF-8
1: UTF-8 是一种编码方式,Unicode是一个字符集合。
2:对于单字节的符号,字节的第一位为0,后面的7位为这个字符的Unicode编码,因此对于英文字母,它的Unicode编码和ACSII编码一样。
3:对于n字节的符号,第一个字节的前n位都是1,第n+1位设为0,后面字节的前两位一律设为10,剩下的没有提及的二进制位,全部为这个符号的Unicode码 。
编码范围(编号对应的十进制数)
二进制格式
0x00—0x7F (0-127)
0xxxxxxx
0x80—0x7FF (128-2047)
110xxxxx 10xxxxxx
0x800—0xFFFF (2048-65535)
1110xxxx 10xxxxxx 10xxxxxx
0x10000—0x10FFFF (65536以上)
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
三:UTF-16
1:是Unicode编码集的一种编码形式,把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。Unicode字符的码位需要1个或者2个16位长的码元来表示,因此UTF-16也是用变长字节表示的。
2: 编码规则:
编号在 U+0000—U+FFFF 的字符(常用字符集),直接用两个字节表示。
编号在 U+10000—U+10FFFF 之间的字符,需要用四个字节表示。
四: UTF-32
1:字符所对应编号的整数二进制形式,每个字符占四个字节,这个是直接进行转换的。该编码方式占用的储存空间较多,所以使用较少。
五:总结
1:Unicode 是编码字符集(字符集)而UTF-8、UTF-16、UTF-32是字符集编码(编码规则)
2:UTF-16 使用变长码元序列的编码方式,相较于定长码元序列的UTF-32算法更复杂,甚至比同样是变长码元序列的UTF-8也更为复杂,因为其引入了独特的代理对这样的代理机制;
3:UTF-8需要判断每个字节中的开头标志信息,所以如果某个字节在传送过程中出错了,就会导致后面的字节也会解析出错
4:UTF-16不会判断开头标志,即使错也只会错一个字符,所以容错能力教强;
5:英文占绝大部分,那么用UTF-8更佳;否则UTF-16就占优势,可以节省很多空间;