codecs は、インターフェイスを定義し、自前の Python 用 codec を、簡単に書くのに使える基底クラス群を定義してあります。
各 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' |
バックスラッシュつきのエスケープシーケンス で置換(エンコードのみ) |
受け付ける値は、register_error を使って追加できます。