编码格式

美国人首先使用电脑,他们用8个晶体管的开合来表示不同的状态,2的8次方有256种状态,后来被叫做了“字节”。美国人把0-127号状态表示为控制码、空格、标点、大小写字母,127号以后的空着,这种方案被称作ANSI的ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)。

后来,其它国家也开始使用电脑,他们发现自己的语言在ASCII码中没有,计算机无法保存他们的语言。So sad!他们决定开发ASCII中127号状态后空着的状态位,加入了他们自己国家的字母、符号、下划线、竖线等等,一直到最后的255号,128-255这部分字符集被称为“扩展字符集”。256个位置被用完了。

再后来,第三世界开始使用电脑,电脑来到了中国,可怜的中国人发现电脑不能保存中文字符,而且已经没有空余的状态使用了,况且中文有6000多个字符,完全不够使用嘛。这难不倒聪明的中国人民,他们粗暴的把128-255这段看不懂的奇异字符给删了,规定一个小于127的字符的意义与原来的(美国人发明)相同,但是2个大于127的字符连在一起(前面高字节,后面低字节)就表示一个汉字,这样就可以组合出7000多个简体汉字了,而且还把数学字符、希腊字母、日文假名都编了进去,甚至还把ASCII中0-127号已经有了的也重新编了一个2个字节的版本(0-127的叫半角字符,2个字节的叫全角字符)。这种方案被命名为“GB2312”,GB2312是对ASCII的中文扩展。

可是中国的汉字实在是太多了,很多人发现自己的名字在电脑中打不出来,于是,中国人干脆就规定,只要一个字节是大于127的,就表示这是一个汉字的开始,不在要求低字节也要大于127了。扩展之后的编码方式呗命名为“GBK”,GBK包括了GB2312的所有内容,同时又增加了20000个汉字(包括了繁体字)和字符。

再后来少数名族的同志也哟用电脑了,怎么办?继续扩展吧,有增加了几千个少数名族的汉字,这个编码被称为“GB18030”。从此中华名族优秀的文化就可以在电脑中传承了。

从GB2312-GBK-GB18030,最大的特点就是2个字节的汉字和1个字节的英文字符并存在一套编码里。那时的程序员必须小心翼翼的处理每个字节的值,以确定它表示的是英文还是汉字。

中国人这么聪明,其它国家也不差,他们都像中国一样搞出了一套自己的编码标准,结果就是谁也不认识谁。连台湾兄弟也发明了BIG5编码,同样说着中文的大陆和台湾,在电脑上却谁也不认识谁。

再后来一个ISO国际组织看不下去了,决定站出来解决这个问题。他们的方案是废除所有地区自己编的山寨编码,创建一个包含地球上所有文字、字符的编码,他们叫它“Unicode”。

Unicode的工作就是为字符配一个神奇的数字。

编码规则:将字符转换为字节序列的规则。

以上ASCII、GB2312、GBK、BIG5等都是字符集,对应的也是一种编码规则。而Unicode是一种字符集,它有很多编码规则:UTF-8、UTF-16等。

Unicode就像一个字符池,用一个非负整数唯一标记了每个字符。UTF8等编码方式就是用1-4个字节标识这个非负整数。

 

posted on 2018-01-19 16:48  萨尔  阅读(114)  评论(0编辑  收藏  举报

导航