From: Hiroshi Ichikawa Date: 2009-02-08T13:23:20+09:00 Subject: [ruby-dev:37939] io.set_encoding("UTF-8", "UTF-8") でエラー Gimiteといいます。 Ruby 1.9.1で $stdin.set_encoding("UTF-8", "UTF-8") $stdin.gets() とすると test.rb:4:in `gets': code converter not found (UTF-8 to UTF-8) (Encoding::ConverterNotFoundError) と言われるのは、いけてない気がするのですが、こういうものでしょうか。この例だと$stdin.set_encoding("UTF-8")とすれば済むのですが、たとえば「標準入力でロケールの文字コードからUTF-8に変換したい」というときに $stdin.set_encoding(Encoding.find("locale"), Encoding.find("locale") == Encoding::UTF_8 ? nil : Encoding::UTF_8) と書かなければいけないのはやや面倒な気がします。internal_encoding == external_encodingなら素通しする、というのはどうでしょうか? ちなみに、出力の場合はエラーにならないようです。 $stdout.set_encoding("UTF-8", "UTF-8") $stdout.puts("ほげ") 試した環境は ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-freebsd6.0] です。