コーデックレジストリとサポート機能
- 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 オブジェクトを取得します。
- 指定された encoding の StreamReader ファクトリ関数を取得します。
- 指定されたエンコーディングの StreamWriter ファクトリ関数を取得します。
UnicodeエンコーディングエラーハンドラーのレジストリAPI
- int PyCodec_RegisterError(const char *name, PyObject *error)
指定された name の下にエラー処理コールバック関数 error を登録します。 このコールバック関数は、エンコード不可能な文字/デコード不可能なバイトが検出され、エンコード/デコード関数の呼び出しでエラーパラメータとして name が指定された場合に、コーデックによって呼び出されます。
コールバックは単一の引数、 UnicodeEncodeError 、 UnicodeDecodeError 、または UnicodeTranslateError のインスタンスを取得します。これは、問題のある文字またはバイトのシーケンスと、元のオフセットに関する情報を保持します。文字列(この情報を抽出する関数については、 Unicode例外オブジェクトを参照してください)。 コールバックは、指定された例外を発生させるか、問題のあるシーケンスの置換を含む2項目のタプルと、エンコード/デコードを再開する必要がある元の文字列のオフセットを示す整数を返す必要があります。
成功した場合は
0
を返し、エラーの場合は-1
を返します。
- PyObject *PyCodec_LookupError(const char *name)
- name で登録されているエラー処理コールバック関数を検索します。 特別な場合として、
NULL
を渡すことができます。その場合、「strict」のエラー処理コールバックが返されます。
- 例外として exc を上げます。
- 誤った入力をスキップして、Unicodeエラーを無視します。
- Unicodeエンコードエラーを
?
またはU+FFFD
に置き換えます。
- UnicodeエンコードエラーをXML文字参照に置き換えます。
- Unicodeエンコードエラーをバックスラッシュエスケープ(
\x
、\u
、\U
)に置き換えます。
- PyObject *PyCodec_NameReplaceErrors(PyObject *exc)
Unicodeエンコードエラーを
\N{...}
エスケープに置き換えます。バージョン3.5の新機能。