编解码器注册表和支持函数

int PyCodec_Register(PyObject *search_function)

注册新的编解码器搜索函数。

作为副作用,这将尝试加载 encodings 如果尚未完成,请打包,以确保它始终位于搜索函数列表的第一位。

int PyCodec_Unregister(PyObject *search_function)

注销编解码器搜索函数并清除注册表的缓存。如果搜索功能未注册,则不执行任何操作。成功时返回0。引发异常并在出错时返回-1。

3.10 新版功能.

int PyCodec_KnownEncoding(const char *encoding)

返回 10 取决于给定的 encoding . 此函数总是成功的。

PyObject *PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)
Return value: New reference.

基于通用编解码器的编码API。

对象 通过为给定的 编码 使用由定义的错误处理方法 错误 . 错误 可能是 NULL 使用为编解码器定义的默认方法。提出一个 LookupError 如果找不到编码器。

PyObject *PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)
Return value: New reference.

基于通用编解码器的解码API。

对象 通过为给定的 编码 使用由定义的错误处理方法 错误 . 错误 可能是 NULL 使用为编解码器定义的默认方法。提出一个 LookupError 如果找不到编码器。

编解码器查找API

在以下函数中, 编码 字符串被查找转换为所有小写字符,这使得通过该机制查找的编码有效地不区分大小写。如果找不到编解码器,则 KeyError 设置和 NULL 返回。

PyObject *PyCodec_Encoder(const char *encoding)
Return value: New reference.

获取给定的编码器函数 encoding .

PyObject *PyCodec_Decoder(const char *encoding)
Return value: New reference.

获取给定的解码器函数 encoding .

PyObject *PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
Return value: New reference.

得到一个 IncrementalEncoder 给定对象 encoding .

PyObject *PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
Return value: New reference.

得到一个 IncrementalDecoder 给定对象 encoding .

PyObject *PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
Return value: New reference.

得到一个 StreamReader 给定的factory函数 encoding .

PyObject *PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
Return value: New reference.

得到一个 StreamWriter 给定的factory函数 encoding .

Unicode编码错误处理程序的注册表API

int PyCodec_RegisterError(const char *name, PyObject *error)

注册错误处理回调函数 errors 在给定条件下 name . 当遇到不可编码字符/不可编码字节时,编解码器将调用此回调函数,并且 name 在对编码/解码函数的调用中被指定为错误参数。

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

返回 0 关于成功, -1 关于错误。

PyObject *PyCodec_LookupError(const char *name)
Return value: New reference.

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

PyObject *PyCodec_StrictErrors(PyObject *exc)
Return value: Always NULL.

提高 exc 作为例外。

PyObject *PyCodec_IgnoreErrors(PyObject *exc)
Return value: New reference.

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

PyObject *PyCodec_ReplaceErrors(PyObject *exc)
Return value: New reference.

将Unicode编码错误替换为 ?U+FFFD .

PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
Return value: New reference.

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

PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
Return value: New reference.

用反斜杠转义替换Unicode编码错误 (\x\u\U

PyObject *PyCodec_NameReplaceErrors(PyObject *exc)
Return value: New reference.

将Unicode编码错误替换为 \N{{...}} 逃逸。

3.5 新版功能.