计算机底层数据存储和运算最终都是使用二进制表示(计算机用高电平和低电平分别来表示1和0)。
1.ASCII码
在最初美国发明计算机后,为了能在计算机中表示大小写英文字母,0-9数字和各种特殊符号,以及换行符,删除符号等,所以发明了ASCII码。
ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年。采用了8位编码规则,即使用8位二进制来表示以上各种符号,不过以上各种符号只需使用前面7位即可满足需求(即128个数字),所以后面的128个数字用过预留。、
所以使用ASCII编码,一个字符占用1bytes(即8bits)。
- GB2312
后期,当电脑引入中国后,就需要一套中文的编码方式来表示中文。所以在1980年,中国将常用的7445个字符,包括6763个汉字和682个其它符号收入GB2312编码规则。GB2312使用二维矩阵方式编码,使用了一个94*94的矩阵表示。并且GB2312编码为了保证不与ASCII码冲突,所以在每隔字节的最高位置1与ASCII码区分。即最高位是0表示未ASCII码,最高位是1表示未GB2312编码。
- GBK
GBK也是使用2bytes编码,是对GB2312的一种扩充。。经过GBK编码后,可以表示的汉字达到了20902个,另有984个汉语标点符号、部首等。值得注意的是这20902个汉字还包含了繁体字。
- GB18030
当GBK也不能满足我国对字符的需求的时候(原本2字节最多可以表示65535个字符,但是因为每隔字节最高位为不与ASCII码冲突,所以只能为1,这样能表示的字符就减少了1半,只有3w多个字符),所以我国采用了4字节编码方式的GB18020编码。同时为了不与 ASCII编码和GBK编码冲突,GB18030编码 GB18030编码的中文文件已经有七万多个汉字了,甚至包含了少数民族文字
- unicode
因为全世界语言众多,不通国家拥有自己的一套编码方式,导致编码规则混乱。最后, ISO(国际标准化组织)发布了一套全世界统一的标准编码方式,unicodeUniversal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “unicode“。unicode统一使用2字节编码,包含全世界所有字符。
6.utf8
unicode统一了全世界所有的字符,但是也随之带来些问题。以前用8位就可以存储的英文字符,现在就需要16位,白白浪费了1倍的空间。另外,以前编程使用GB2312等编码方式,8位可以表示的一个字符,在unicode里面需要2位表示。在unicode中,一个字符就是两个字节。一个汉字算两个英文字符的时代已经快过去了。
为解决以上问题,出现了utf8编码方式。TF-8就是每次8个位传输数据。UTF-8就是在互联网上使用最广的一种unicode的实现方式
UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节)。从unicode到utf-8并不是直接的对应,而是要过一些算法和规则来转换。