1.计算机只能处理数字,文本转换为数字才能处理。计算机中8个bit作为一个字节,所以一个字节能表示最大的数字就是255。
2.计算机是美国人发明的,所以一个字节可以表示所有字符了,ASCII(一个字节)编码就成为了美国人的标准编码。
3.但ASCII处理中文明显是不够的,中文不止255个汉字,所以中国定制了GB2312编码,用两个字节表示一个汉字。GB2312还把ASCII包含进去了,同理,日文、韩文等上百个国家为了解决这个问题都发展了一套自己的编码,标准越来越多,如果出现多种语言混合显示就一定会出现乱码。
4.于是Unicode就出现了,Unicode将所有编码统一到一套编码里。(两个字节)
5.乱码问题解决了,但如果内容全是英文,Unicode编码比ASCII编码需要多一倍的存储空间,同时如果传输需要多一倍左右的的传输时间。
6.然后“utf-8"出现了,它是一套可变长的编码,把英文变成一个字节,汉字3个字节,特别生僻的变成4-6字节,如果传输大量的英文,utf-8作用就很明显了。
7.decode的作用是把其他编码转换成Unicode编码,encode的作用是把Unicode编码转换成自己想要它成为的编码。Windows下默认编码格式是GB2312,s.decode("gb2312").encode("utf-8)的意思是:将字符串s由GB2312转换为Unicode,然后再转换成utf-8编码。linux下默认编码格式是utf-8,这里说的默认编码是在该系统下,输入的字符串是该编码。

