编码机

GB2312取代UTF8并不存在

发布时间:2024/9/15 12:22:36   

编码如果我们只认识UTF-8和GB就显得格局太小了,甚至于有非常多人不了解它们是什么,又代表了怎样的含义,所以才提出GB何时能够代替UTF-8的问题。

众所周知目前的机器仅能识别“0”和“1”,也就是说机器只能够处理数字,想要处理文本,就必须先把文本转换为数字机器才能处理。举个例子:字母“A”是一个字符,在ASCII码中十进制数“65”就表示字符“A”,用二进制数表示就是“”。这时我们就能很好的理解编码了,编码表非常像一本字典,只有它的存在二进制数、十进制数、字符之间才能相互转换,像极了一本密码本,只有拥有这本密码本才能相互解密,要不看着就是乱码。

最早出现的编码是ASCII,因为计算机最早是由美国人发明的,所以ASCII里最早只有个字符被编码到计算机里,包括了大小写英文字母、数字和一些符号。

如果全世界的人都使用英文那么编码后面就不会发生那么多事了,26个字母大小写也就是52个,数字0^9,再加上标点符号和其他一些符号,但事实并不是这样的全世界有上百种语言,所以各国都有各国的编码标准。比如中国大陆几乎所有的中文系统和软件都支持GB(GB就是国标的意思),它几乎满足了计算机中汉字99.75%的使用频率,但人名、古汉语等会出现罕用字,所以才出现了后来的GBK、GB汉字字符集。

各国的编码各顾各的就导致了乱码

过去word文档打开常常就是一堆乱码,就是编码导致的,没有识别到正确的编码显示就是乱码。

因此Unicode字符集编码就出现了,它将世界上所有语言都统一到了一套编码里面,这样就不会再出现乱码的问题了,所以操作系统和大多数编程语言就开始直接支持Unicode字符集编码。

Unicode字符集确实是解决了乱码的问题,但如果你写的文本基本都是英文的话,用Unicode编码会比ASCII编码需要多出一倍的存储空间,因为ASCII编码是1个字节,而Unicode编码通常是2个字节。比如字母“A”用ASCII编码二进制是,而采用Unicode编码就是00000000,这样在存储和传输的效率上就显得特别的不划算。于是Unicode编码就演变为可变长编码的UTF-8编码,常用的英文字母被编码为1个字节,汉字通常是3个字节,而一些生僻字符则会编码成4~6个字节,这样就能节省存储资源、提高传输的效率。

综上所述

GB是字符中文编码的一种国家标准,而UTF-8囊括了几乎所有国家的常用字符编码,名副其实的成为了万国编码。既然有万国编码的存在,为什么GB又没有消失呢?这是因为我们可能还需要显示一些不同寻常、不常见的汉字,所以就不能完全才有万国编码。

要实现UTF-8编码和GB编码的转换必须先把UTF-8编码还原成Unicode编码,再把Unicode编码转化成GB编码,同样GB转换成UTF-8也是同样的道理。所以别再提GB合适能够代替UTF-8的问题了,这样会显得特别没有文化。



转载请注明:http://www.aideyishus.com/lkgx/6857.html
------分隔线----------------------------