成瀬です。

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  <naruse / airemix.jp>