GB2312何时能够代替UTF-8?
编码如果我们只认识UTF-8和GB2312就显得格局太小了,甚至于有非常多人不了解它们是什么,又代表了怎样的含义,所以才提出GB2312何时能够代替UTF-8的问题。
众所周知目前的机器仅能识别“0”和“1”,也就是说机器只能够处理数字,想要处理文本,就必须先把文本转换为数字机器才能处理。举个例子:字母“A”是一个字符,在ASCII码中十进制数“65”就表示字符“A”,用二进制数表示就是“0100 0001”。这时我们就能很好地理解编码了,编码表非常像一本字典,只有它的存在二进制数、十进制数、字符之间才能相互转换,像极了一本密码本,只有拥有这本密码本才能相互解密,要不看着就是乱码。
最早出现的编码是ASCII,因为计算机最早是由美国人发明的,所以ASCII里最早只有127个字符被编码到计算机里,包括了大小写英文字母、数字和一些符号。
如果全世界的人都使用英文那么编码后面就不会发生那么多事了,26个字母大小写也就是52个,数字0^9,再加上标点符号和其他一些符号,但事实并不是这样的全世界有上百种语言,所以各国都有各国的编码标准。比如中国大陆几乎所有的中文系统和软件都支持GB2312(GB就是国标的意思),它几乎满足了计算机中汉字99.75%的使用频率,但人名、古汉语等会出现罕用字,所以才出现了后来的GBK、GB18030汉字字符集。
各国的编码各顾各的就导致了乱码
过去word文档打开常常就是一堆乱码,就是编码导致的,没有识别到正确的编码显示就是乱码。
因此Unicode字符集编码就出现了,它将世界上所有语言都统一到了一套编码里面,这样就不会再出现乱码的问题了,所以操作系统和大多数编程语言就开始直接支持Unicode字符集编码。
Unicode字符集确实是解决了乱码的问题,但如果你写的文本基本都是英文的话,用Unicode编码会比ASCII编码需要多出一倍的存储空间,因为ASCII编码是1个字节,而Unicode编码通常是2个字节。比如字母“A”用ASCII编码二进制是01000001,而采用Unicode编码就是00000000 01000001,这样在存储和传输的效率上就显得特别的不划算。于是Unicode编码就演变为可变长编码的UTF-8编码,常用的英文字母被编码为1个字节,汉字通常是3个字节,而一些生僻字符则会编码成4~6个字节,这样就能节省存储资源、提高传输的效率。
综上所述
GB2312是字符中文编码的一种国家标准,而UTF-8囊括了几乎所有国家的常用字符编码,名副其实地成为了万国编码。既然有万国编码的存在,为什么GB2312又没有消失呢?这是因为我们可能还需要显示一些不同寻常、不常见的汉字,所以就不能完全才有万国编码。
要实现UTF-8编码和GB2312编码的转换必须先把UTF-8编码还原成Unicode编码,再把Unicode编码转化成GB2312编码,同样GB2312转换成UTF-8也是同样的道理。所以别再提GB2312合适能够代替UTF-8的问题了,这样会显得特别没有文化。
以上个人浅见,欢迎批评指正。
认同我的看法,请点个赞再走,感谢!
喜欢我的,请关注我,再次感谢!