###
1 Codec オブジェクト

`Codec` クラスは以下のメソッドを定義します。これらのメソッドは、 内部状態を持たないエンコーダ／デコーダ関数のインタフェースを定義します。

`encode`( | input[, errors])

  オブジェクト input エンコードし、(出力オブジェクト, 消費した 長さ) のタプルを返します。 codecs は Unicode 専用ではありませんが、 Unicode の文脈では、エンコーディングは Unicode オブジェクトを 特定の文字集合エンコーディング(たとえば `cp1252` や `iso-8859-1`)を使って文字列オブジェクトに変換します。

  errors は適用するエラー処理を定義します。`'strict'` 処理が デフォルトです。

  このメソッドは `Codec` に内部状態を保存してはなりません。効率 よくエンコード／デコードするために状態を保持しなければならない ような codecs には `StreamCodec` を使ってください。

  エンコーダは長さが 0 の入力を処理できねばなりません。この場合、 空のオブジェクトを出力オブジェクトとして返さねばなりません。

`decode`( | input[, errors])

  オブジェクト input をデコードし、(出力オブジェクト, 消費した長 さ) のタプルを返します。Unicode の文脈では、デコードは特定の文字集合 エンコーディングでエンコードされた文字列を Unicode オブジェクトに変換 します。

  input は `bf_getreadbuf` バッファスロットを提供するオブジェ クトでなければなりません。バッファスロットを提供しているオブジェクトには Python 文字列オブジェクト、バッファオブジェクト、メモリマップファイル があります。

  errors は適用するエラー処理を定義します。`'strict'` がデフ ォルト値です。

  このメソッドは、`Codec` インスタンスに内部状態を保存しては なりません。効率よくエンコード／デコードするために状態を保持しなけれ ばならないような codecs には `StreamCodec` を使ってください。

  デコーダは長さが 0 の入力を処理できねばなりません。この場合、 空のオブジェクトを出力オブジェクトとして返さねばなりません。

`StreamWriter` と `StreamReader` クラスは、新しいエンコーデ ィングモジュールを、非常に簡単に実装するのに使用できる、一般的なインターフ ェイス提供します。実装例は `encodings.utf_8` をご覧ください。