編解碼器登錄檔和支援函式¶
-
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_ReplaceErrors(PyObject *exc)¶
- 返回值:新引用。屬於 穩定 ABI 的一部分。
將 Unicode 編碼錯誤替換為
?
或U+FFFD
。
-
PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)¶
- 返回值:新引用。屬於 穩定 ABI 的一部分。
將 Unicode 編碼錯誤替換為 XML 字元引用。