Py3中,str类型数据在内存中是以unicode编码方式存在的。
但Unicode编码的数据无法用于文件传输,传输时,需要将其转换为bytes类型数据,然后再用其他编码方式编码如:utf-8、gbk等。
s = 'mumu' # str类型
s = b'mumu' # types类型
1、编码encode
将str --> types
s1 = 'mumu'
s10 = s1.encode() # 将s1转换为types类型,为定义编码方式,结果为:b'mumu'
s11 = s1.encode('utf-8') # 将s1转换为types类型,编码方式为utf-8 b'mumu'
s12 = s1.encode('gbk') # 将s1转换为types类型,编码方式为gbk b'mumu'
注意:中文型字符串,结果会转换为 b\xd6\x23\x44 (一个 \xfa 表示一个byte,当一个中文转换为两个\x00,则表示编码方式为gbk,3个则为utf-8)
2、解码decode
解析成当前环境能理解的语言(即当前环境是什么编码方式就以什么编码方式进行解码)
s = '大叔' # Python中字符串类型是以Unicode编码方式存在的
b = s.encode('utf-8') # 当把编码方式换位‘utf-8’时,则转为了bytes类型,b'\xe5\xa4\xa7\xe5\x8f\x94'
s1 = b.decode('utf-8') # 解除‘utf-8’编码,则还原为字符串,大叔
s2 = b.decode('gbk') # 以gbk的方式解码,则会出现乱码,澶у彅
英文字符串无论是‘utf-8’还是‘gbk’其都以一个byte为一个字,所以对于英文,无论哪种解码方式都能成功解码
小结:
数据类型 str --> types
编码方式 Unicode --> 其他
编码:encode
解码:decode