编码
ascii码
一个字符占8位,用一个字节表示
A:00000010 8位 一个字节
Unicode
一个字符占32位,用四个字节表示
A :00000000 00000001 00000010 00000100 32位 四个字节
中:00000000 00000001 00000010 00000110
utf-8
A:00000010 8位 一个字节
中:00000000 00000001 00000110 24位 三个字节
gbk:
A:00000010 8位 一个字节
中:00000000 00000110 16位 两个字节
注意:
1. 各个编码的二进制不能互相识别,会产生乱码
2. 文件的储存、传输,不能是Unicode (只能是utf-8/16/gbk/gbk2312/ascii码进行存储和传输)
3. 字节是个单位,字符是看到的最小元素
小数据池
小数据池:创建范围之内的数字或者字符串共用一个内存地址,节省内存
数字的范围:-5~256
字符串范围:
1. 不能含有特殊字符
2. s*20还是同一个地址,s*21以后都是两个地址
python3中
字符串在内存中使用Unicode储存的
bytes类型编码方式:utf-8,gbk,gb2313,ascii
对于英文:
str:
表现形式 s='alex'
编码方式 010101010 unicode
bytes:
表现形式 s=b'alex'
编码方式 000101010 utf-8/gbk
对于中文:
str:
表现形式 s='中国'
编码方式 010101010 unicode
bytes:
表现形式 s=b'xe91e91e01e21e31e32'
编码方式 000101010 utf-8/gbk....
将str转换成bytes类型(传输和存储必须是bytes类型)
s1='alex' s2=s1.encode('utf-8') print(s2) #b'alex'