07-python3编码转换¶
目标¶
- 知道使用encode和decode()对字符串编码和解码
- 知道编解码失败如何忽略错误
文本总是Unicode
,由str
类型进行表示,二进制数据使用bytes
进行表示
网络中数据的传输是以二进制(字节码)的方式来进行的,所以我们需要通过对Unicode字符串内容进行编码和解码才能达到数据传输的目的
在Python中:
str->bytes:encode编码 编码就是将字符串转换成字节码,涉及到字符串的内部表示
bytes->str:decode解码 解码就是将字节码转换为字符串,将比特位显示成字符。
其中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)
我是文本
详细的可以参照官方文档: