当前位置: 首页 > Web前端 > HTML5

UTF-8、UTF-16 和 Unicode 有什么联系

时间:2023-04-06 00:05:40 HTML5

UTF-8、UTF-16和Unicode之间有什么联系?约定了一种编码规范,即ASCII(AmericanStandardCodeforInformationInterchange:美国信息交换标准代码);ASCII是一种以拉丁字母为基础的计算机编码系统,是一种单字节编码,主要用于显示现代英语和其他西欧语言。它使用7位二进制数字(剩余1位二进制位为0)来表示所有大小写字母、数字0到9、标点符号以及美式英语中使用的特殊控制字符。随着计算机传到欧洲,发现很多符号(法语、德语等)不能用ASCII表示,于是欧洲人自己创造了一套编码,这就是ISO/IEC8859-1。ISO/IEC8859-1也是一种单字节编码,并且向后兼容ASCII。它的编码范围是0x00-0xFF,0x00-0x7F与ASCII完全一致,0x80-0x9F是控制字符,0xA0-0xFF之间是文字符号。与ASCII的区别体现在:ASCII是7位的容器,而ISO-8859-1是8位的容器。后来电脑传入中国,汉字起码有几万个,常用的有几千个。如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且不能和ASCII码冲突。为此,我国制定了GB2312编码对中文进行编码。于是乎,我们推出了一套GBK,向下兼容ASCII。GBK的全称是《汉字内码扩展规范》(GBK是“国标”和“扩充”汉语拼音的首字母,英文名称:ChineseInternalCodeSpecification),采用双字节编码,编码范围从8140到8140FEFE(不含xx7F),共23940个码位,共收录21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1中的所有中日韩汉字和国家标准GB13000-1,包括所有BIG5编码的汉字。这下国际组织就看不下去了。这样下去,每个地区都会出一套自己的代码,那就没事了。于是想出了一套代码,总结了大家的代码,也就是unicode代码。Unicode(统一码,UniversalCode,统一码)是计算机科学领域的一个行业标准,包括字符集、编码方案等,Unicode的产生是为了解决传统字符编码方案的局限性。它为每种语言中的每个字符设置了统一唯一的二进制编码,以满足跨语言、跨平台的文本转换和处理的要求。Unicode只是一个字符编码表,在计算机中存储时,必须指定具体的存储方式。常见的如utf8、utf16、utf32等。UTF—8UTF—8(8-bitUnicodeTransformationFormat),以8位无符号整数为单位对Unicode进行编码。UTF-8的特点是对不同范围的字符使用不同的长度编码。它是一种变长编码,一个Unicode字符被编码成1到4个字节。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全一样。UTF-8编码最大长度为4字节,可容纳21位二进制数字。而Unicode的最大码位0x10FFFF只有21位。UnicodeUTF-8U+0000–U+007F0xxxxxxxU+0080–U+07FF110xxxxx10xxxxxxU+0800–U+FFFF1110xxxx10xxxxxx10xxxxxxU+10000–U+10FFFF11110xxx10xxxxxx10xxxxxx10xxxxxx表示的一个字节的uft8编码(unicode0~7范围)一个字节长度的uft8是(0x80~0x07FF)三个字节长度的uft8表示的unicode编码范围是(0x0800~0xFFFF)四个字节长度的uft8表示的unicode编码范围是(0x10000~0x10FFFF)UTF—16UTF—16(16-bitUnicodeTransformationFormat),以16位无符号整数为单位编码Unicode。UTF-16也是一种变长编码。一个Unicode字符被编码成1~2个代码单元,每个代码单元使用16位(2字节)。