コーデックレジストリとサポート関数—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.9/c-api/codec
移動先:案内検索

コーデックレジストリとサポート機能

int PyCodec_Register(PyObject *search_function)

新しいコーデック検索機能を登録します。

副作用として、これはencodingsパッケージをロードしようとしますが、まだ実行されていない場合は、検索機能のリストの最初にあることを確認します。

int PyCodec_KnownEncoding(const char *encoding)
指定されたエンコーディングに登録されたコーデックがあるかどうかに応じて、1または0を返します。 この関数は常に成功します。
PyObject *PyCodec_Encode(PyObject *object, const char *encoding, const char *errors)

汎用コーデックベースのエンコーディングAPI。

オブジェクトは、エラーで定義されたエラー処理メソッドを使用して、指定されたエンコーディングで見つかったエンコーダ関数を通過します。 エラーは、コーデック用に定義されたデフォルトのメソッドを使用するためにNULLである可能性があります。 エンコーダーが見つからない場合、 LookupError を発生させます。

PyObject *PyCodec_Decode(PyObject *object, const char *encoding, const char *errors)

汎用コーデックベースのデコードAPI。

オブジェクトは、エラーで定義されたエラー処理メソッドを使用して、指定されたエンコーディングで見つかったデコーダー関数を通過します。 エラーは、コーデック用に定義されたデフォルトのメソッドを使用するためにNULLである可能性があります。 エンコーダーが見つからない場合、 LookupError を発生させます。

コーデックルックアップAPI

次の関数では、 encoding 文字列がすべて小文字に変換されてルックアップされるため、このメカニズムでルックアップされるエンコーディングでは、大文字と小文字が区別されません。 コーデックが見つからない場合は、 KeyError が設定され、NULLが返されます。

PyObject *PyCodec_Encoder(const char *encoding)
指定された encoding のエンコーダー関数を取得します。
PyObject *PyCodec_Decoder(const char *encoding)
指定されたエンコーディングのデコーダー関数を取得します。
PyObject *PyCodec_IncrementalEncoder(const char *encoding, const char *errors)
指定されたエンコーディングIncrementalEncoder オブジェクトを取得します。
PyObject *PyCodec_IncrementalDecoder(const char *encoding, const char *errors)
指定されたエンコーディングIncrementalDecoder オブジェクトを取得します。
PyObject *PyCodec_StreamReader(const char *encoding, PyObject *stream, const char *errors)
指定された encodingStreamReader ファクトリ関数を取得します。
PyObject *PyCodec_StreamWriter(const char *encoding, PyObject *stream, const char *errors)
指定された encodingStreamWriter ファクトリ関数を取得します。


UnicodeエンコーディングエラーハンドラーのレジストリAPI

int PyCodec_RegisterError(const char *name, PyObject *error)

指定されたでエラー処理コールバック関数 error を登録してください。 このコールバック関数は、エンコード不可能な文字/デコード不可能なバイトが検出され、エンコード/デコード関数の呼び出しでエラーパラメーターとして name が指定された場合に、コーデックによって呼び出されます。

コールバックは単一の引数、 UnicodeEncodeErrorUnicodeDecodeError 、または UnicodeTranslateError のインスタンスを取得します。これは、問題のある文字列またはバイトのシーケンスと、元のオフセットに関する情報を保持します。文字列(この情報を抽出する関数については、 Unicode例外オブジェクトを参照してください)。 コールバックは、指定された例外を発生させるか、問題のあるシーケンスの置換を含む2項目のタプルと、エンコード/デコードを再開する必要がある元の文字列のオフセットを示す整数を返す必要があります。

成功した場合は0を返し、エラーの場合は-1を返します。

PyObject *PyCodec_LookupError(const char *name)
name で登録されているエラー処理コールバック関数を検索します。 特別な場合として、NULLを渡すことができます。その場合、「strict」のエラー処理コールバックが返されます。
PyObject *PyCodec_StrictErrors(PyObject *exc)
例外として exc を発生させます。
PyObject *PyCodec_IgnoreErrors(PyObject *exc)
誤った入力をスキップして、Unicodeエラーを無視します。
PyObject *PyCodec_ReplaceErrors(PyObject *exc)
Unicodeエンコードエラーを?またはU+FFFDに置き換えます。
PyObject *PyCodec_XMLCharRefReplaceErrors(PyObject *exc)
UnicodeエンコードエラーをXML文字参照に置き換えます。
PyObject *PyCodec_BackslashReplaceErrors(PyObject *exc)
Unicodeエンコードエラーをバックスラッシュエスケープ(\x\u\U)に置き換えます。
PyObject *PyCodec_NameReplaceErrors(PyObject *exc)

Unicodeエンコードエラーを\N{...}エスケープに置き換えます。

バージョン3.5の新機能。