字符编码
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。
由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
中文编码问题一直是程序员头疼的问题。Python2的默认编码是ASCII码,Python3的默认编码是UTF-8
一、python2 与 python3 通用的编码方式
1、UTF-8编码方式:
英文 :A 00100000 8位 1字节
中文: 中 00000001 00000010 00001110 24位 3字节
2、GBK编码方式:
英文: A 00000110 8位 1字节
中文: 中 00000010 00000110 16位 2字节
各个编码之间二进制,是不能互相识别的,会产生混乱
文件之间的储存、传输、不能用Unicode码(因为所占用的空间太大),只能用UTF-8、UTF-16、GBK、GB2312、ASCII码
3、str在Python中是用Unicode码,还有一种是bytes 类型
1、英文
str:
表现形式 s = ‘alex‘
编码方式 0101010101 unicode
bytes:
表现形式 s = b‘alex‘
编码方式 00101010 utf-8 gbk
2、中文
str:
表现方式 s= ‘中国‘
编码方式 01010110 utf-8 gbk
bytes:
表现方式 b‘x\e91\e91\e01\e21\e31\e32
编码方式 01001100 utf-8 gbk