###
5 StreamRecoder オブジェクト

`StreamRecoder` はエンコーディングデータの、フロントエンド-バック エンドを観察する機能を提供します。異なるエンコーディング環境を扱うとき、 便利な場合があります。

`lookup()` 関数が返すファクトリ関数を使って、インスタンスを生成 するという設計になっています。

クラス `StreamRecoder`( | stream, encode, decode, Reader, Writer, errors)

  双方向変換を実装する `StreamRecoder` インスタンスを生成します。 encode と decode はフロントエンド (`read()` への入 力と`write()`からの出力) を処理し、Reader と Writer は バックエンド (ストリームに対する読み書き) を処理します。

  これらのオブジェクトを使って、たとえば、Latin-1 から UTF-8、あるいは逆 向きの変換を、透過に記録できます。

  stream はファイル的オブジェクトでなくてはなりません。

  encode と decode は `Codec` のインタフェースに忠 実でなくてはなりません。Reader と Writer は、それぞれ `StreamReader` と `StreamWriter` のインタフェースを提供 するオブジェクトのファクトリ関数かクラスでなくてはなりません。

  encode と decode はフロントエンドの変換に必要で、 Reader と Writer はバックエンドの変換に必要です。中間のフ ォーマットはコデックの組み合わせによって決定されます。たとえば、 Unicode コデックは中間エンコーディングに Unicode を使います。

  エラー処理はストリーム・リーダやライタで定義されている方法と同じように 行われます。

`StreamRecoder` インスタンスは、`StreamReader` と `StreamWriter` クラスを合わせたインタフェースを定義します。また、 元のストリームのメソッドと属性も継承します。