Codec registry and support functions

int PyCodec_Register(PyObject *search_function)

注册新的编解码器搜索功能。

作为副作用,尝试加载encodings包(如果尚未加载),以确保它始终位于搜索函数列表中的第一位。

int PyCodec_KnownEncoding(const char *encoding)

根据给定的编码是否存在已注册的编解码器,返回10

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_Encoder(const char *encoding)

获取给定编码的编码器函数。

PyObject* PyCodec_Decoder(const char *encoding)

为给定的编码获取解码器函数。

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指定为错误参数时,此回调函数将由编解码器调用。

回调函数获取一个参数,即UnicodeEncodeErrorUnicodeDecodeErrorUnicodeTranslateError的实例,它保存有关字符或字节及其偏移的有问题序列的信息在原始字符串中(参见Unicode Exception Objects用于提取此信息的函数)。回调必须引入给定的异常,或者返回包含有问题序列的替换的两项目元组,以及给出应该在其中恢复编码/解码的原始字符串中的偏移量的整数。

成功时返回0,出现错误时返回-1

PyObject* PyCodec_LookupError(const char *name)

查找在名称下注册的错误处理回调函数。作为特殊情况,可以传递NULL,在这种情况下将返回“strict”的错误处理回调。

PyObject* PyCodec_StrictErrors(PyObject *exc)

引发exc作为例外。

PyObject* PyCodec_IgnoreErrors(PyObject *exc)

忽略unicode错误,跳过错误的输入。

PyObject* PyCodec_ReplaceErrors(PyObject *exc)

?替换unicode编码错误U+FFFD

PyObject* PyCodec_XMLCharRefReplaceErrors(PyObject *exc)

使用XML字符引用替换unicode编码错误。

PyObject* PyCodec_BackslashReplaceErrors(PyObject *exc)

使用反斜杠转义(\x\u\U)替换unicode编码错误。

PyObject* PyCodec_NameReplaceErrors(PyObject *exc)

\N{...}转义替换unicode编码错误。

版本3.5中的新功能。