07-python3编码转换

目标

  • 知道使用encode和decode()对字符串编码和解码
  • 知道编解码失败如何忽略错误

文本总是Unicode,由str类型进行表示,二进制数据使用bytes进行表示

网络中数据的传输是以二进制(字节码)的方式来进行的,所以我们需要通过对Unicode字符串内容进行编码和解码才能达到数据传输的目的

在Python中:

str->bytes:encode编码 编码就是将字符串转换成字节码,涉及到字符串的内部表示
bytes->str:decode解码 解码就是将字节码转换为字符串,将比特位显示成字符。

image-20180626202806220

其中decode()encode()方法可以接受参数,其声明分别为:

bytes.decode(encoding="utf-8", errors="strict")

str.encode(encoding="utf-8", errors="strict")

其中的encoding是指在解码编码过程中使用的编码(此处指“编码方案”是名词),errors是指错误的处理方案。

  • encoding -- 可选参数,要使用的编码,默认编码为 'utf-8'。
  • errors -- 可选参数,设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。

字符串通过编码成为字节码,字节码通过解码成为字符串。

>>> 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)
我是文本

详细的可以参照官方文档: