- ANSII码:包含英文,数字,和特殊字符与01之间的关系
一个字符一个字节
- GBK:只包含中文,英文字母,数字,特殊字符与01之间的关系
一个字符两个字节
- Unicode:万国码,有世界上所有语言与01之间的关系
一个字符四个字节
- UTF-8:改良版万国码,根据语言不通调整字节大小
- 不同密码本之间不能互相识别
- 数据在内存中全部是以Unicode编码,但是当你的数据用于网络传输或储存在硬盘中,必须是以非Unicode编码(UTF-8,GBK)
- 基于第一和第二条,再进行网络传输时内存中要用非Unicode方法存储,对于Python来说,有了以下的类型
- bytes
- 英文:
str:
内存中编码方式:Unicode
表现:‘hello‘
bytes:
内存中编码方式:非Unicode b=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‘>
- utf-8和gbk之间的转化都是通过Unicode运行的
编码进阶
原文:https://www.cnblogs.com/Alan-kx/p/13623654.html