计算机中的编码问题
2017-06-25 19:46:48
计算机中存在着很多编码,诸如AscII,GBK,ISO,UTF-8,UTF-16等,那这些编码到底是怎么产生,又有什么区别呢?
字符的含义:字符就是一系列有意义的图形,如 a,[,u等等。该开始的时候,是美国人发明了计算机语言,英文字母只有26个,加上加减乘除,阿拉伯数字等等字符也只有127个,于是8位就可以表示所有的字符了,于是美国人便将8位称为一个字节。并且根据其中的对应关系画了一个ascII码表。于是第一张ascII码表便出现了。
历史在进步,欧洲人进场,他们有各种其他的语言,诸如拉丁文,希腊文等。之前美国人值用了前127个,后面的128-255是待定的,于是,各个国家就将自己国家的字符塞进了后面128-255中,于是这就生成了各种ISO 8859字符集。比如西欧是ISO/IEC 8859-1,中欧是ISO/IEC 8859-2等。
随着中国改革开放,中国开始投身互联网大潮中,可是中文字符远远不止256个,这样的话显然原先的AscII就不适用了,如果改用16位来表示的话就会65536个,这样的就完全足够了。中国人是非常聪明的,首先将16位分成前8位和后8位。如果前8位小于等于127的话,那么该字符就是普通字符,如果前8位超过127,那么就需要和后8位结合起来共同形成一个汉字。这就是GB2312,后来原先加入的汉字不够用了,之后又国家又组织了一批人将剩下的汉字也加入了进去,形成了GBK。这里GB就是国标的意思,K是扩展的意思。
湾湾当然是不能用大陆的GB系列的编码,于是湾湾就开发了BIG5的编码方式。
随着互联网的普及,出现了各种各样的编码方式。当然这对于互联网进一步的发展是非常不利的。于是统一编码方式Unicode出现了,Unicode采用的是一个通用的字符集UCS,每个语种都从中划出一块自己的领域。目前采用的是UCS-2,就是不论中文英文都采用两个字节进行表示,也就是UTF-16。如果不够怎么办,不用担心,如今已经有了UCS-4的预定方案。那将是几十亿量级的字符集,真的是绰绰有余了。
不过,美国人不干了,我只要8个字节就足够了,凭什么让我用16个字节来表示,这不是浪费带宽吗。于是UTF-8出现了,在UTF-8中中文占了三个字节,比GBK要所占一个字节,所以很多中国公司内部的编码方式使用GBK的,这样更节省资源。