編解碼器登錄檔和支援函式

int PyCodec_Register(PyObject *search_function)
屬於 穩定 ABI 的一部分。

註冊一個新的編解碼器搜尋函式。

作為副作用,如果尚未完成,這將嘗試載入 encodings 包,以確保它始終位於搜尋函式列表的第一個。

int PyCodec_Unregister(PyObject *search_function)
自 3.10 版本起屬於 穩定 ABI 的一部分。

登出編解碼器搜尋函式並清除登錄檔的快取。如果搜尋函式未註冊,則不執行任何操作。成功返回 0。引發異常並返回 -1 表示錯誤。

在 3.10 版本中新增。

int PyCodec_KnownEncoding(const char *encoding)
屬於 穩定 ABI 的一部分。

根據給定 encoding 是否有已註冊的編解碼器,返回 10。此函式始終成功。

PyObject *PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)
返回值:新引用。屬於 穩定 ABI 的一部分。

通用的基於編解碼器的編碼 API。

object 透過為給定的 encoding 找到的編碼器函式傳遞,並使用 errors 定義的錯誤處理方法。errors 可以為 NULL,以使用為編解碼器定義的預設方法。如果找不到編碼器,則引發 LookupError

PyObject *PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)
返回值:新引用。屬於 穩定 ABI 的一部分。

通用的基於編解碼器的解碼 API。

object 透過為給定的 encoding 找到的解碼器函式傳遞,並使用 errors 定義的錯誤處理方法。errors 可以為 NULL,以使用為編解碼器定義的預設方法。如果找不到編碼器,則引發 LookupError

編解碼器查詢 API

在以下函式中,encoding 字串在查詢時會轉換為全部小寫字元,這使得透過此機制查詢的編碼在效果上不區分大小寫。如果找不到編解碼器,則會設定 KeyError 並返回 NULL

PyObject *PyCodec_Encoder(const char *encoding)
返回值:新引用。屬於 穩定 ABI 的一部分。

獲取給定 encoding 的編碼器函式。

PyObject *PyCodec_Decoder(const char *encoding)
返回值:新引用。屬於 穩定 ABI 的一部分。

獲取給定 encoding 的解碼器函式。

PyObject *PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
返回值:新引用。屬於 穩定 ABI 的一部分。

獲取給定 encodingIncrementalEncoder 物件。

PyObject *PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
返回值:新引用。屬於 穩定 ABI 的一部分。

獲取給定 encodingIncrementalDecoder 物件。

PyObject *PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
返回值:新引用。屬於 穩定 ABI 的一部分。

獲取給定 encodingStreamReader 工廠函式。

PyObject *PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
返回值:新引用。屬於 穩定 ABI 的一部分。

獲取給定 encodingStreamWriter 工廠函式。

Unicode 編碼錯誤處理程式的登錄檔 API

int PyCodec_RegisterError(const char *name, PyObject *error)
屬於 穩定 ABI 的一部分。

使用給定的name註冊錯誤處理回撥函式error。當編解碼器遇到不可編碼的字元/不可解碼的位元組,並且在呼叫編碼/解碼函式時,name被指定為錯誤引數時,將呼叫此回撥函式。

回撥函式會收到一個引數,即 UnicodeEncodeError, UnicodeDecodeErrorUnicodeTranslateError 的例項。該例項包含關於有問題的字元或位元組序列的資訊以及它們在原始字串中的偏移量(請參閱 Unicode 異常物件 獲取用於提取此資訊的函式)。回撥函式必須引發給定的異常,或者返回一個包含兩個元素的元組,該元組包含有問題的序列的替換項,以及一個整數,該整數表示應在原始字串中恢復編碼/解碼的偏移量。

成功時返回 0,出錯時返回 -1

PyObject *PyCodec_LookupError(const char *name)
返回值:新引用。屬於 穩定 ABI 的一部分。

查詢在 name 下注冊的錯誤處理回撥函式。作為特殊情況,可以傳遞 NULL,在這種情況下,將返回“strict”的錯誤處理回撥函式。

PyObject *PyCodec_StrictErrors(PyObject *exc)
返回值:始終為 NULL。 穩定 ABI 的一部分。

引發 exc 作為異常。

PyObject *PyCodec_IgnoreErrors(PyObject *exc)
返回值:新引用。屬於 穩定 ABI 的一部分。

忽略 Unicode 錯誤,跳過錯誤的輸入。

PyObject *PyCodec_ReplaceErrors(PyObject *exc)
返回值:新引用。屬於 穩定 ABI 的一部分。

將 Unicode 編碼錯誤替換為 ?U+FFFD

PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
返回值:新引用。屬於 穩定 ABI 的一部分。

將 Unicode 編碼錯誤替換為 XML 字元引用。

PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
返回值:新引用。屬於 穩定 ABI 的一部分。

將 Unicode 編碼錯誤替換為反斜槓轉義符(\x\u\U)。

PyObject *PyCodec_NameReplaceErrors(PyObject *exc)
返回值:新引用。 自 3.7 版本起成為 穩定 ABI 的一部分。

將 Unicode 編碼錯誤替換為 \N{...} 轉義符。

在 3.5 版本中新增。