编码是学习编程前必须要克服的一个问题,但是它并没有那么难以理解。相信大家在打开浏览器的时候就会有机会看到页面乱码,这就是因为编码和解码不一致导致的。
编码主要有两类,一类是非Unicode编码,一类是Unicode编码。
1. 非Unicode编码
主要的非Unicode编码包括ASCII、ISO8859-1、windows-1252、GB2312、GBK、GB18030、Big5等。下面进行一一介绍。
1.1 ASCII
大家都知道,计算机起源于美国,当时的玩家从来没有想到计算机现在对整个世界的革命程度有多深刻,当时,科学家还在自己的伊甸园中小心翼翼的托着那个计算机原型,当时只是为了满足当时的需求,只考虑了美国字符。大概只需要128个字符,所以就规定了128个字符的二进制表示方法,这个方法是一个标准,被称为ASCII编码。
128个字符可以用7位二进制表示,而计算机中存储的最小单位是byte,即8位,所以,ASCII码中最高位设置为0,用剩下的7位表示字符,这7位可以看成数字0-127。数字32-126都是可打印字符,0-31和127是不可打印字符,一般是用于控制目的。
ASCII对于美国是够用了,但是对于其他国家却不够。于是有很多国家定制了自己的编码方式,为了保持与ASCII兼容,一般将最高位设置为1。欧洲流行的编码方式有ISO8859-1、windows-1252,中国有GB2312、GBK、GB18030、big5。
1.2 ISO8859-1
ISO8859-1也是用一个字节表示的,1-127和ASCII表示含义一致,128-255规定了不同的含义,其中160-255表示一些欧洲字符。
1.3 windows-1252
实际上欧洲使用更多的是windows-1252编码。因为ISO8859-1虽然是欧洲的标准编码方式,当时它由于时间较早,有些字符并不包含在内(比如欧元符号),而Windows-1252编码中加入了欧元符号以及其他常用的字符,所以实际使用的更广泛。
1.4 GB2312
美国和西欧用一个字节就完全可以表示国家的所有字符,而中国是象形问题国家,每一个字都需要有唯一的编码来表示,所以一个字节肯定是远远不够的。GB2312是中国的第一个标准,针对的是简体中文常见字符,包括约7000个汉字和一些繁体字。
GB2312固定使用2个字节表示汉字。这两个字节中,最高位都是1,如果是0,就认为 是ASCII字符。
1.5 GBK
GBK是建立在GB2312基础上,向下兼容GB2312。GBK包含约21000个汉字。
1.6 GB18030
GB18030向下兼容GBK,增加了55000个字符,共76000多个字符,包括很多少数民族字符,以及中日韩统一字符。
GB18030使用变长编码,有的字符2个字节,有的字符是4个字节。
1.7 Big5
Big5是针对繁体中文的,广泛用于我国港澳台等地区,固定使用两个字节表示。
2 Unicode编码
以上介绍的是中文和西欧的字符编码格式,但世界上还有其他国家的字符,那么世界上有没有统一的编码方式?有的,这种编码方式就是Unicode编码。