## 4.9.1 Codec 基底クラス

`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` を使って追加できます。