編解碼器註冊表和支援函式

intPyCodec_Register(PyObject*search_function)
穩定 ABI 的一部分.

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

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

intPyCodec_Unregister(PyObject*search_function)
穩定 ABI 的一部分 自 3.10 版本開始.

取消註冊編解碼器搜尋函式並清除註冊表 (registry) 的快取。如果搜尋函式並未被註冊,則不執行任何操作。成功回傳 0,發生錯誤時會引發例外並回傳 -1。

在 3.10 版被加入.

intPyCodec_KnownEncoding(constchar*encoding)
穩定 ABI 的一部分.

回傳10,具體取決於是否有給定encoding 的已註冊編解碼器。這個函式總會成功。

PyObject*PyCodec_Encode(PyObject*object,constchar*encoding,constchar*errors)
回傳值:新的參照。穩定 ABI 的一部分.

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

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

PyObject*PyCodec_Decode(PyObject*object,constchar*encoding,constchar*errors)
回傳值:新的參照。穩定 ABI 的一部分.

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

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

編解碼器查找 API

在以下函式中,查找的encoding 字串的所有字元將轉換為小寫,這使得透過此機制查找的編碼可以不區分大小寫而更有效率。如果未找到編解碼器,則會設定KeyError 並回傳NULL

PyObject*PyCodec_Encoder(constchar*encoding)
回傳值:新的參照。穩定 ABI 的一部分.

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

PyObject*PyCodec_Decoder(constchar*encoding)
回傳值:新的參照。穩定 ABI 的一部分.

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

PyObject*PyCodec_IncrementalEncoder(constchar*encoding,constchar*errors)
回傳值:新的參照。穩定 ABI 的一部分.

取得給定encodingIncrementalEncoder 物件。

PyObject*PyCodec_IncrementalDecoder(constchar*encoding,constchar*errors)
回傳值:新的參照。穩定 ABI 的一部分.

取得給定encodingIncrementalDecoder 物件。

PyObject*PyCodec_StreamReader(constchar*encoding,PyObject*stream,constchar*errors)
回傳值:新的參照。穩定 ABI 的一部分.

取得給定encodingStreamReader 工廠函式。

PyObject*PyCodec_StreamWriter(constchar*encoding,PyObject*stream,constchar*errors)
回傳值:新的參照。穩定 ABI 的一部分.

取得給定encodingStreamWriter 工廠函式。

用於 Unicode 編碼錯誤處理程式的註冊 API

intPyCodec_RegisterError(constchar*name,PyObject*error)
穩定 ABI 的一部分.

在給定的name 下註冊錯誤處理回呼 (callback) 函式error。當編解碼器遇到無法編碼的字元/無法解碼的位元組並且name 被指定為呼叫編碼/解碼函式時的錯誤參數時,將呼叫此回呼函式。

回呼取得單個引數,即UnicodeEncodeErrorUnicodeDecodeErrorUnicodeTranslateError 的實例,其中包含關於有問題的字元或位元組序列及其在原始字串中偏移量的資訊(有關取得此資訊的函式,請參閱Unicode Exception Objects)。回呼必須引發給定的例外,或者回傳一個包含有問題序列的替換的二元組 (two-item tuple),以及一個代表原始字串中應該被恢復的編碼/解碼偏移量的整數。

成功時回傳0,錯誤時回傳-1

PyObject*PyCodec_LookupError(constchar*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)
回傳值:新的參照。穩定 ABI 的一部分 自 3.7 版本開始.

將 unicode 編碼錯誤替換為\N{...} 跳脫。

在 3.5 版被加入.