編解碼器註冊和支援函式

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 的一部分。

獲取給定 *encoding* 的 IncrementalEncoder 物件。

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

獲取給定 *encoding* 的 IncrementalDecoder 物件。

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

獲取給定 *encoding* 的 StreamReader 工廠函式。

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

獲取給定 *encoding* 的 StreamWriter 工廠函式。

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

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

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

回撥函式接收一個引數,它是 UnicodeEncodeErrorUnicodeDecodeErrorUnicodeTranslateError 的例項,其中包含有關有問題的字元序列或位元組及其在原始字串中的偏移量的資訊(有關提取此資訊的函式,請參見 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 版本加入。