编码进阶
- ANSII码:包含英文,数字,和特殊字符与01之间的关系
一个字符一个字节 - GBK:只包含中文,英文字母,数字,特殊字符与01之间的关系
一个字符两个字节 - Unicode:万国码,有世界上所有语言与01之间的关系
一个字符四个字节 - UTF-8:改良版万国码,根据语言不通调整字节大小
- 不同密码本之间不能互相识别
- 数据在内存中全部是以Unicode编码,但是当你的数据用于网络传输或储存在硬盘中,必须是以非Unicode编码(UTF-8,GBK)
- 基于第一和第二条,再进行网络传输时内存中要用非Unicode方法存储,对于Python来说,有了以下的类型
- bytes
- 英文:
str:
内存中编码方式:Unicode
表现:'hello'
bytes:
内存中编码方式:非Unicodeb=b'hello' print(b,type(b)) #b'hello' <class 'bytes'> - 中文
str:
内存中的编码方式:Unicode
表现:'中国'
bytes:
内存中的编码方式:非Unicode #UTF-8
表现:'中国'
bytes:b='中国' b=b.encode('utf-8') #编码 print(b,type(b)) #b'\xe4\xb8\xad\xe5\x9b\xbd' <class 'bytes'> b=b.decode('utf-8') print(b,type(b)) #解码 #中国 <class 'str'>
- 英文:
- bytes
- utf-8和gbk之间的转化都是通过Unicode运行的

浙公网安备 33010602011771号