近期比较空闲,也想更好的使用python,所以决定整理一下基础知识,代码来自源码,解析来自官方文档。
codecs.Codec = class Codec(builtins.object)
定义无状态编码器/解码器的接口。
.encode()/.decode()方法可以通过提供errors参数(字符串值)来使用不同的错误处理方案。
这些字符串值是预定义的:
'strict' - 引发ValueError错误(或子类)
'ignore' - 忽略该字符并继续下一个字符
'replace' - 替换为合适的替换字符
Python将在解码时使用内置Unicode编码解码器的官方U+FFFD替换字符,在编码时使用'?'
'surrogateescape' - 替换为专用代码点U+DCnn
'xmlcharrefreplace' - 替换为适当的XML字符引用(仅用于编码)
'backslashreplace' - 替换为反斜杠转义序列。
'namereplace' - 替换为\N{…}转义序列(仅用于编码)
允许值集可通过register_error进行扩展。
此处定义方法:
decode(self, input, errors='strict')
解码对象输入并返回tuple (output object, length consumed)
输入必须是提供bf_getreadbuf缓冲槽的对象
Python字符串、缓冲区对象和内存映射文件就是提供此插槽的对象的示例
错误定义要应用的错误处理。它默认为"strict"处理
该方法不能在编解码器实例中存储状态
对于必须保持状态以使解码有效的编解码器,请使用StreamReader
在这种情况下,解码器必须能够处理零长度输入并返回输出对象类型的空对象
encode(self, input, errors='strict')
对对象输入进行编码并返回tuple (output object, length consumed)
错误定义要应用的错误处理。它默认为"strict"处理
该方法不能在编解码器实例中存储状态
对于必须保持状态以提高编码效率的编解码器,请使用StreamWriter
在这种情况下,解码器必须能够处理零长度输入并返回输出对象类型的空对象
此处定义数据描述符:
__dict__
实例变量字典(如果已定义)
__weakref__
对象的弱引用列表(如果已定义)
参考文档:Python 教程 — Python 3.10.0 文档
待完善...