1.总述
ASCII:1967诞生的只有128个拉丁字母的编码方式,GB2312是一个汉化的ASCII,unicode是1990推出的全球编码标准。UTF和GBK都是基于unicode的实现,GBK是汉化的UTF,二者要互通都必须先转为unicode。
2.编年史
1967:ASCII(American Standard Code for Information Interchange)存写和运行一体,美国推出世界推行,一共128字符。相当于最简单的身份证,只有姓名和籍贯。
1981:GB2312又称为区位码,虽然ASCII通用,但是大陆无法推广,认识英语的毕竟少数人。精英使用ASCII之后,模仿ASCII在华语区搞出了GB2312。相当于搞出了中国自己的身份证。
1990:unicode(全名Unicode Character Set),简写UCS。世界各国都搞出了自己的编码,不同工具访问不同国家的资源就出现了乱码,美国推出的unicode,把各国的编码都塞了进去。相当于搞出了世界通行的护照标准。
1990:UTF(Unicode Transformation Format,简称为 UTF),unicode每个字节占用的资源太多,不便于存储和传输。类似于依据护照标准搞出了使用最广的护照。
1995:GBK是中国基于unicode标准,做了本土化之后的产品,不考虑国际化,没有特殊字符时,计算、传输效率等高很多。好比中国在自己的护照加了nfc等等。
3.战争史
ASCII:美国的第一代产品,西方世界使用拼写语言的国家统统被攻占。
GB2312:汉语属于非拼写类,不适合用ASCII,本土化之后就是GB2312,那段时间有些大佬就是卖汉卡起家的。汉卡就是用来做编码解码的。
unicode:美国把各国类似于GB2312的东西,全部柔和在一起的产品。世界通行的标准。
UTF:基于unicode标准的实现,相当于美国提供了生产护照的一整套流水线。
GBK:基于unicode标准的实现,中国做了自己生产护照的一整套流水线。
4.彩蛋
Bom:大端和小端之争就是一个习惯问题,Byte Order Mark用于解决这个问题。人流方向是一个同源但不同解决方案的问题,人流有靠左有靠右,但是最后会归于同一个方向,因为和别人不同方向会遇到更大阻力。计算机代码总是习惯于用标志位解决这一类问题
编码:公司软要求UTF-8格式,这个美国定的,现在的各类编译器也基本是他们做的,考虑统一性原则都用UTF-8,编译时被错误解码的概率小。