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]
です。