Codec registry and support functions¶
- int
PyCodec_Register
(PyObject *search_function)¶ 注册新的编解码器搜索功能。
作为副作用,尝试加载
encodings
包(如果尚未加载),以确保它始终位于搜索函数列表中的第一位。
- int
PyCodec_KnownEncoding
(const char *encoding)¶ 根据给定的编码是否存在已注册的编解码器,返回
1
或0
。
- PyObject*
PyCodec_Encode
(PyObject *object, const char *encoding, const char *errors)¶ 基于通用编解码器的编码API。
对象通过使用由错误定义的错误处理方法为给定的编码找到的编码器函数传递。错误可能是NULL,以使用为编解码器定义的默认方法。如果未找到编码器,则引发
LookupError
。
- PyObject*
PyCodec_Decode
(PyObject *object, const char *encoding, const char *errors)¶ 基于通用编解码器的解码API。
对象通过使用由错误定义的错误处理方法的针对给定的编码找到的解码器函数。错误可能是NULL,以使用为编解码器定义的默认方法。如果未找到编码器,则引发
LookupError
。
Codec lookup API¶
在以下函数中,将查找编码字符串转换为所有小写字符,这使得通过此机制查找的编码有效地不区分大小写。如果未找到编解码器,则会设置KeyError
并返回NULL。
- PyObject*
PyCodec_IncrementalEncoder
(const char *encoding, const char *errors)¶ 为给定的编码获取
IncrementalEncoder
对象。
- PyObject*
PyCodec_IncrementalDecoder
(const char *encoding, const char *errors)¶ 为给定的编码获取
IncrementalDecoder
对象。
- PyObject*
PyCodec_StreamReader
(const char *encoding, PyObject *stream, const char *errors)¶ 为给定的编码获取
StreamReader
工厂函数。
- PyObject*
PyCodec_StreamWriter
(const char *encoding, PyObject *stream, const char *errors)¶ 为给定的编码获取
StreamWriter
工厂函数。
Registry API for Unicode encoding error handlers¶
- int
PyCodec_RegisterError
(const char *name, PyObject *error)¶ 在给定的名称下注册错误处理回调函数错误。当遇到不可编码的字符/不可解码字节并且在调用encode / decode函数时将name指定为错误参数时,此回调函数将由编解码器调用。
回调函数获取一个参数,即
UnicodeEncodeError
,UnicodeDecodeError
或UnicodeTranslateError
的实例,它保存有关字符或字节及其偏移的有问题序列的信息在原始字符串中(参见Unicode Exception Objects用于提取此信息的函数)。回调必须引入给定的异常,或者返回包含有问题序列的替换的两项目元组,以及给出应该在其中恢复编码/解码的原始字符串中的偏移量的整数。成功时返回
0
,出现错误时返回-1
。