4.9.1 Codec 基底クラス

codecs では、codec のインタフェースを定義する一連の 基底クラスを用意して、Python 用 codec を簡単に自作できるように しています。

Python で何らかの codec を使えるようにするには、 状態なしエンコーダ、状態なしデコーダ、ストリームリーダ、 ストリームライタの 4 つのインタフェースを定義せねばなりません。 通常は、状態なしエンコーダとデコーダを再利用して ストリームリーダとライタのファイル・プロトコルを実装します。

Codec クラスは、状態なしエンコーダ・デコーダのインタフェースを 定義しています。

エラー処理の簡便化と標準化のため、encode() メソッドと decode() メソッドでは、errors 文字列引数を指定した 場合に別のエラー処理を行うような仕組みを実装してもかまいません。 全ての標準 Python codec では以下の文字列が定義され、実装されています。

Value Meaning
'strict' UnicodeError (または、そのサブクラス) を送出します - デフォルトの動作です。
'ignore' その文字を無視し、次の文字から変換を再開します。
'replace' 適当な文字で置換します - Python の組み込み Unicode codec のデコード時には公式の U+FFFD REPLACEMENT CHARACTER を、 エンコード時には '?' を使います。
'xmlcharrefreplace' 適切な XML 文字参照で置換します (エンコードのみ)
'backslashreplace' バックスラッシュつきのエスケープシーケンス で置換します (エンコードのみ)

codecs がエラーハンドラとして受け入れる値はregister_error を 使って追加できます。



ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。