編解碼器註冊和支援函式¶
-
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* 的已註冊編解碼器,返回
1
或0
。此函式總是成功的。
-
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_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* 為錯誤引數時,將呼叫此回撥函式。
回撥函式接收一個引數,它是
UnicodeEncodeError
、UnicodeDecodeError
或UnicodeTranslateError
的例項,其中包含有關有問題的字元序列或位元組及其在原始字串中的偏移量的資訊(有關提取此資訊的函式,請參見 Unicode 異常物件)。回撥函式必須要麼引發給定的異常,要麼返回一個包含兩個專案的元組:有問題序列的替換,以及一個整數,表示在原始字串中應恢復編碼/解碼的偏移量。成功時返回
0
,錯誤時返回-1
。
-
PyObject *PyCodec_LookupError(const char *name)¶
- 返回值: 新引用。 穩定ABI 的一部分。
查詢在 *name* 下注冊的錯誤處理回撥函式。在特殊情況下,可以傳入
NULL
,此時將返回“strict”的錯誤處理回撥函式。
-
PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)¶
- 返回值: 新引用。 穩定ABI 的一部分。
將 Unicode 編碼錯誤替換為 XML 字元引用。