哈喽,大家好!我是土豆,今天呢,我们来聊聊计算机编码那些事。
在开始之前,我想向大家介绍一下什么是编码。
编码呢说到底就是信息从一种形式或格式转换为另一种形式的过程,简单来讲就是语言的编译过程。也就是说用一种形式代替了另一种形式。
例如我们熟知的摩斯密码就是用两种基本信号:短促的点信号“·”(读“滴”)和保持一定时间的长信号“—”(读“嗒”)来对26个字母进行编码,从而实现了信息的编译过程。
莫斯密码
其实我们这里的计算机编码和莫斯密码相似,只不过我们这里采用了二进制数来对字符进行了编码。
由于我们每个人都可以制定自己一套(当然了这也叫编码),而如果我们大家都想彼此通信的话,就必须使用相同的编码规则,于是美国有关组织就出台了ASCII编码。(计算机最先是人家发明的嘛,这个可以理解)。
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。
ASCII码
但是,随着科技的快速发展,这里就出现了问题:在英语中这些编码当然可以解决所用的问题,但是世界上语言那么多,其他的语言怎么办?
为了解决这个问题,我们对编码进行了两次扩编:1981年的IBM扩展字符集扩编和“ANSI字符集”扩编。
事实证明,别人是靠不住的,尽管进行了两次扩编,我国的汉字编码并没有得到很好的解决,于是我们便制定了属于我们自己的“编码”:GB2312-80 标准和GBK 编码标准。
GB2312-80 是 1980 年制定的中国汉字编码国家标准。共收录 7445 个字符,其中汉字 6763 个。GB2312 兼容标准 ASCII码,采用扩展 ASCII 码的编码空间进行编码,一个汉字占用两个字节,每个字节的最高位为 1。
但是这次编码并没有覆盖我们所有的汉字,于是我们在1995年我们又制定了GBK 编码标准。这次编码我们兼容了GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码,编码空间为 0x8140~0xFEFE,共有 23940 个码位,其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。收录了 21003 个汉字。
不过这次编码虽然汉字达到了2万多个,但对于我国的藏文、蒙古文并没有纳入进去,为了有效解决这个问题,我们又对编码进行了扩编,这次扩编包含多种我国少数民族文字(如藏、蒙古、傣、彝、朝鲜、维吾尔文等多个文字,光是汉字就有七万余个,这就是GB18030编码标准。
至此,我们的问题才得到了有效的解决。
不过呢,为了各国的交流,我们又弄出了一个新的标准,即UniCode。
统一码(Unicode),也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
我们常用的UTF-8就属于统一码的一种。
好了,今天我们就先分享在这里,由于我也是刚刚接触不久,所以有些东西可能介绍的不太准确,欢迎大家来指正!
,