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

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

起源

在计算机发明之初,因为计算机只能存储二进制的数据,美国人民为了交流通讯方便,约定了一个编码规范,也就是 ASCIIAmerican Standard Code for Information Interchange:美国信息交换标准代码);编码

ASCII 是基于拉丁字母的一套电脑编码系统,是 单字节编码,主要用于显示现代英语和其余西欧语言。
它使用 7 位二进制数(剩下的1位二进制为0)来表示全部的大写和小写字母,数字0 到九、标点符号,以及在美式英语中使用的特殊控制字符。

随着计算机传到了欧洲,发现不少符号(法语,德语等)没办法用 ASCII 表示,因而欧洲人本身也撸了一套编码,也就是 ISO/IEC 8859-1code

ISO/IEC 8859-1 也是 单字节编码,而且向下兼容 ASCII,其编码范围是 0x00-0xFF0x00-0x7F之间彻底和 ASCII一致, 0x80-0x9F之间是控制字符, 0xA0-0xFF之间是文字符号。
ASCII的区别体如今: ASCII是一个7位的容器, ISO-8859-1是一个8位的容器。

再后来,计算机就传入了中国,中国汉字少说就有几万,经常使用的就有几千个了。若是要表示中文,显然一个字节是不够的,至少须要两个字节,并且还不能和ASCII编码冲突,因此,中国制定了GB2312编码,用来把中文编进去。因而乎,咱们就撸出了一套GBK,并向下兼容ASCIIorm

GBK 全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称: Chinese Internal Code Specification),采用 双字节编码,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,彻底兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的所有中日韩汉字,并包含了BIG5编码中的全部汉字。

这时国际组织看不下去了,要是这样下去每一个地区都出一套本身的编码,那还得了。因而乎撸了一套把你们的编码都概括进去的编码,也就是 unicode编码ci

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每一个字符设定了统一而且惟一的二进制编码,以知足跨语言、跨平台进行文本转换、处理的要求。
Unicode 只是一种 字符码表, 而在计算机中进行存储时,必须指定一种具体的存储方式。常见的如 utf8, utf16, utf32等。

UTF—8

UTF—8(8-bit Unicode Transformation Format),以8位无符号整数为单位对Unicode进行编码。unicode

UTF-8 的特色是对不一样范围的字符使用不一样长度的编码,是一种变长编码,对于一个Unicode的字符被编码成1至4个字节。对于0x00-0x7F之间的字符,UTF-8 编码与 ASCII 编码彻底相同。it

UTF-8编码的最大长度是4个字节,便可以容纳21位二进制数字。而 Unicode 的最大码位0x10FFFF也只有21位。io

Unicode UTF-8
U+0000 – U+007F 0xxxxxxx
U+0080 – U+07FF 110xxxxx 10xxxxxx
U+0800 – U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
U+10000 – U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
一个字节的uft8表示的unicode 码范围为( 0 ~0x7F)

两个字节长度的uft8 表示的unicode码范围为(0x80 ~ 0x07FF)字符编码

三个字节长度的uft8 表示的unicode码范围为(0x0800 ~ 0xFFFF)table

四个字节长度的uft8 表示的unicode码范围为(0x10000 ~ 0x10FFFF)form

UTF—16

UTF—16(16-bit Unicode Transformation Format),以16位无符号整数为单位对Unicode进行编码。

UTF-16 也是一种变长编码,对于一个Unicode的字符被编码成1~2个code unit,每一个code unit使用16位 (2个字节)。

相关文章
相关标签/搜索