編解碼器注冊(cè)與支持功能?

int PyCodec_Register(PyObject *search_function)?
Part of the Stable ABI.

注冊(cè)一個(gè)新的編解碼器搜索函數(shù)。

作為副作用,其嘗試加載 encodings 包,如果尚未完成,請(qǐng)確保它始終位于搜索函數(shù)列表的第一位。

int PyCodec_Unregister(PyObject *search_function)?
Part of the Stable ABI since version 3.10.

注銷一個(gè)編解碼器搜索函數(shù)并清空注冊(cè)表緩存。 如果指定搜索函數(shù)未被注冊(cè),則不做任何操作。 成功時(shí)返回 0。 出錯(cuò)時(shí)引發(fā)一個(gè)異常并返回 -1。

3.10 新版功能.

int PyCodec_KnownEncoding(const char *encoding)?
Part of the Stable ABI.

根據(jù)注冊(cè)的給定 encoding 的編解碼器是否已存在而返回 10。此函數(shù)總能成功。

PyObject *PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)?
Return value: New reference. Part of the Stable ABI.

泛型編解碼器基本編碼 API。

object 使用由 errors 所定義的錯(cuò)誤處理方法傳遞給定 encoding 的編碼器函數(shù)。 errors 可以為 NULL 表示使用為編碼器所定義的默認(rèn)方法。 如果找不到編碼器則會(huì)引發(fā) LookupError。

PyObject *PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)?
Return value: New reference. Part of the Stable ABI.

泛型編解碼器基本解碼 API。

object 使用由 errors 所定義的錯(cuò)誤處理方法傳遞給定 encoding 的解碼器函數(shù)。 errors 可以為 NULL 表示使用為編解碼器所定義的默認(rèn)方法。 如果找不到編解碼器則會(huì)引發(fā) LookupError。

Codec 查找API?

在下列函數(shù)中,encoding 字符串會(huì)被查找并轉(zhuǎn)換為小寫字母形式,這使得通過(guò)此機(jī)制查找編碼格式實(shí)際上對(duì)大小寫不敏感。 如果未找到任何編解碼器,則將設(shè)置 KeyError 并返回 NULL。

PyObject *PyCodec_Encoder(const char *encoding)?
Return value: New reference. Part of the Stable ABI.

為給定的 encoding 獲取一個(gè)編碼器函數(shù)。

PyObject *PyCodec_Decoder(const char *encoding)?
Return value: New reference. Part of the Stable ABI.

為給定的 encoding 獲取一個(gè)解碼器函數(shù)。

PyObject *PyCodec_IncrementalEncoder(const char *encoding, const char *errors)?
Return value: New reference. Part of the Stable ABI.

為給定的 encoding 獲取一個(gè) IncrementalEncoder 對(duì)象。

PyObject *PyCodec_IncrementalDecoder(const char *encoding, const char *errors)?
Return value: New reference. Part of the Stable ABI.

為給定的 encoding 獲取一個(gè) IncrementalDecoder 對(duì)象。

PyObject *PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)?
Return value: New reference. Part of the Stable ABI.

為給定的 encoding 獲取一個(gè) StreamReader 工廠函數(shù)。

PyObject *PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)?
Return value: New reference. Part of the Stable ABI.

為給定的 encoding 獲取一個(gè) StreamWriter 工廠函數(shù)。

用于Unicode編碼錯(cuò)誤處理程序的注冊(cè)表API?

int PyCodec_RegisterError(const char *name, PyObject *error)?
Part of the Stable ABI.

在給定的 name 之下注冊(cè)錯(cuò)誤處理回調(diào)函數(shù) error。 該回調(diào)函數(shù)將在一個(gè)編解碼器遇到無(wú)法編碼的字符/無(wú)法解碼的字節(jié)數(shù)據(jù)并且 name 被指定為 encode/decode 函數(shù)調(diào)用的 error 形參時(shí)由該編解碼器來(lái)調(diào)用。

該回調(diào)函數(shù)會(huì)接受一個(gè) UnicodeEncodeError, UnicodeDecodeErrorUnicodeTranslateError 的實(shí)例作為單獨(dú)參數(shù),其中包含關(guān)于有問(wèn)題字符或字節(jié)序列及其在原始序列的偏移量信息(請(qǐng)參閱 Unicode 異常對(duì)象 了解提取此信息的函數(shù)詳情)。 該回調(diào)函數(shù)必須引發(fā)給定的異常,或者返回一個(gè)包含有問(wèn)題序列及相應(yīng)替換序列的二元組,以及一個(gè)表示偏移量的整數(shù),該整數(shù)指明應(yīng)在什么位置上恢復(fù)編碼/解碼操作。

成功則返回``0`` ,失敗則返回``-1``

PyObject *PyCodec_LookupError(const char *name)?
Return value: New reference. Part of the Stable ABI.

查找在 name 之下注冊(cè)的錯(cuò)誤處理回調(diào)函數(shù)。 作為特例還可以傳入 NULL,在此情況下將返回針對(duì) "strict" 的錯(cuò)誤處理回調(diào)函數(shù)。

PyObject *PyCodec_StrictErrors(PyObject *exc)?
Return value: Always NULL. Part of the Stable ABI.

引發(fā) exc 作為異常。

PyObject *PyCodec_IgnoreErrors(PyObject *exc)?
Return value: New reference. Part of the Stable ABI.

忽略 unicode 錯(cuò)誤,跳過(guò)錯(cuò)誤的輸入。

PyObject *PyCodec_ReplaceErrors(PyObject *exc)?
Return value: New reference. Part of the Stable ABI.

使用 ?U+FFFD 替換 unicode 編碼錯(cuò)誤。

PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)?
Return value: New reference. Part of the Stable ABI.

使用 XML 字符引用替換 unicode 編碼錯(cuò)誤。

PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)?
Return value: New reference. Part of the Stable ABI.

使用反斜杠轉(zhuǎn)義符 (\x, \u\U) 替換 unicode 編碼錯(cuò)誤。

PyObject *PyCodec_NameReplaceErrors(PyObject *exc)?
Return value: New reference. Part of the Stable ABI since version 3.7.

使用 \N{...} 轉(zhuǎn)義符替換 unicode 編碼錯(cuò)誤。

3.5 新版功能.