From: "NARUSE, Yui" Date: 2009-02-10T21:54:32+09:00 Subject: [ruby-dev:37957] Re: io.set_encoding("UTF-8", "UTF-8") でエラー 成瀬です。 Hiroshi Ichikawa wrote: > 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("ほげ") 確かに仰る通りなので r22146 でそのようにしました。 -- NARUSE, Yui