IOのドキュメントより http://doc.ruby-lang.org/ja/1.9.2/class/IO.html IOオブジェクトは外部エンコーディングと内部エンコーディングを持つ。 外部エンコーディング IOが表すファイルなどの文字エンコーディング 内部エンコーディング IOから読み込まれた文字列、あるいはIOの書き込みメソッドへ渡す文字列の文字エンコーディング IOのエンコーディングが指定されていない場合 IOから読み込んだ文字列のエンコーディングはEncoding.default_externalに設定される。エンコーディングの検査や変換は行われない。 外部エンコーディングのみが指定されている場合 IOから読み込んだ文字列のエンコーディングは外部エンコーディングに設定される。エンコーディングの検査や変換は行われない。 IOへ書き込まれる文字列は外部エンコーディングに変換される。