Tags: Python Python3
对于从python2.7过来的人,对python3的感受就是python3对文本以及二进制数据做了比较清晰的区分。文本总是Unicode
,由str
类型进行表示,二进制数据使用bytes
进行表示,不会将str
与bytes
偷偷的混在一起,使得两者的区别更加明显。在python2
中会明显发现不能将str
与bytes
拼接在一起,也不能在bytes
中查找字符。
然而在实际应用中经常需要对两者进行转换操作以便后续的代码能够顺利跑完。两者之间的关如下所示:
str->bytes:encode编码
bytes->str:decode解码
字符串通过编码成为字节码,字节码通过解码成为字符串。
>>> text = '我是文本'
>>> text
'我是文本'
>>> print(text)
我是文本
>>> bytesText = text.encode()
>>> bytesText
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> print(bytesText)
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> type(text)
<class 'str'>
>>> type(bytesText)
<class 'bytes'>
>>> textDecode = bytesText.decode()
>>> textDecode
'我是文本'
>>> print(textDecode)
我是文本
对于这些可以这么理解:
编码就是将字符串转换成字节码,涉及到字符串的内部表示。
解码就是将字节码转换为字符串,将比特位显示成字符。
其中decode()
与encode()
方法可以接受参数,其声明分别为:
bytes.decode(encoding="utf-8", errors="strict")
str.encode(encoding="utf-8", errors="strict")
其中的encoding
是指在解码编码过程中使用的编码(此处指“编码方案”是名词),errors
是指错误的处理方案。
详细的可以参照官方文档:
str.encode()
bytes.decode()