Python语言在网络爬虫领域应用的十分广泛。在爬虫的应用程序中,我们需要对网页上获取的数据进行处理,其中字符的编码、解码常常让人感到困惑:ASCII码、Unicode、字符编码什么的,很多朋友一直为此头大,那么,我们就分上、下两集来专门深入剖析这些内容。
先开始我们不讲编程,不堆概念,我们讲讲故事:说说字符编码是如何变成今天这样的
关于字符编码的概念太多太杂,当ASCII、GB2312、Unicode、UTF-8、UTF-16、编码、解码等诸多名词一股脑堆上来时,确实容易让人迷糊。
为了把这些问题讲清楚,我们从历史维度,在时间轴上梳理计算机在不同语言国家不断发展的过程,以此来彻底搞清楚这些概念。
1.字符编码与解码是什么
计算机自己能理解的“语言”是二进制数,最小的信息标识是二进制位,8个二进制位表示一个字节;而我们人类所能理解的语言文字则是一套由英文字母、汉语汉字、标点符号字符、阿拉伯数字等等很多的字符构成的字符集。如果要让计算机来按照人类的意愿进行工作,则必须把人类所使用的这些字符集转换为计算机所能理解的二级制码,这个过程就是编码,他的逆过程称为解码。
2.ASCII到Unicode的演进过程
计算机最开始在美国被发明使用,需要编码的字符集并不是很大,无外乎英文字母、数字和一些简单的标点符号,因此采用了一种单字节编码系统。在这套编码规则中,人们将所需字符集中的字符一一映射到128个二进制数上,这128个二进制数最高位为0,利用剩余低7位组成00000000~01111111(0X00~0X7F)。
0X00到0X1F这32个二进制数来对控制字符或通信专用字符(如LF换行、DEL删除、BS退格)