一、计算机的编码
计算机只能识别0和1,是如下所示:
从输入内容到计算机转变成0与1的代码就是编码,计算机内部有一个编码表进行一一对应。
二、二进制
用来存放一个0或者1的位置,就是计算机中最小的储存单位,叫做【位】,外国名字叫【bit】,也叫做【比特】。我们规定8个比特构成一个【字节】(byte),字节是计算机里最常用的单位。
- 我们千兆宽带,其实说的是以比特每秒位单位,1000M就是 1000Mbit/s。
- 我们下载速度是以字节每秒位单位显示的,1byte = 8bit。
- 那么,1000M bit = 125M byte。
- 也就是说千兆宽带,每秒下载速度最多125M。那我们的百兆宽带,下载速度也就只有十几兆了。
三、编码表
- 计算机开始发明的时候,用来解决数字计算问题。但是后来发现,只用二进制解决问题还是有限。
- 计算机这种东西最早由老外发明,外国人使用的英语只有26个字母,再加上标点、数字和一些符号也不会太多,老外搞出来一个东西叫做ASCII码,这个比二进制高级了一些。ASCII码组合出的256种状态,至此一个字节就使用满了。
- 后来,计算机传入中国,汉字千千万,256种状态远远不够。科学家就重新编写了一张编码表,叫做GB2312(word中有这种编码方式),它使用2个字节16个比特位,来表示绝大多数(65535)个汉字。后来,为了显示更多的汉字,又研究出一套编码,GBK编码。
美国人有ASCII码,中国人有GB2312/GBK编码,那欧洲人、阿拉伯人也有他们自己的编码方式,这就导致了乱码的产生。
- Unicode应运而生。Unicode把所有语言都统一到一套编码里,可以容纳100多万个符号,这样就不会再有乱码问题了。但是由于把所有语言都统一到一套编码里中,就造成Unicode码越来越庞大。比如英文A,之前可以用00010001表示,但是到了Unicode码中,必须使用00000000 00010001来表示。太长了,太麻烦了。
- 科学家们又针对Unicode码研究出了一种可变长度字符编码,叫做UTF-8(8-bit Unicode Transformation Format),它可以根据不同的符号来变化字节长度。
四、编码encode()与解码decode()
- 编码encode就是把人类语言转成计算机语言。
- 解码decode就是把计算机语言转成人类语言。
print('刘德华'.encode('gbk'))
print('郭富城'.encode