###
4.9.1.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` をご覧ください。