字符串的编码
- 计算机只能处理数字,文本转换为数字才能处理。计算机中的8bit就是一个字节,所以一个字节能表示最大的数字就是255.
- 计算机是美国人发明的,所以一个字节可以表示所有的字符,所以ASCII(一个字节)编码成为了美国人的标准编码。
- 中文里面的字符远大于255,所以ASCII编码处理中文是不够的,所以中国制定了GB2312编码,用两个字节表示一个汉字。同理,其他国家为了解决这个问题,就发展了很多标准,如果出现多种语言混合就会出现乱码。
- Unicode将所有语言统一到一套标准编码里面。
- 但是,如果内容都是英文,Unicode编码比ASCII编码多一倍的存储空间。
- 所以出现了可变长的编码“UTF-8”,把英文变长为一个字节,中文变为3个字节,特别生僻的变为4-6个字节,如果传输大量英文,UTF-8对比Unicode的优势就很明显了
在进行代码处理的时候,固定长度的Unicode编码处理起来比可变长度的UTF-8更加方便简单,UTF-8的优势在于文本的存储和传送。
在Python3.x中,所有字符串已经转换为Unicode编码。
在Python2.x中,需要将字符串decode为Unicode后才能进行encode。