藤岡です。

> こんな問題が出ました。ソースも charset も UTF-8 なのに、コードが妙に変
> 換されてしまっています。
> 
> Ruby 1.8.4
> 
> $ echo | ruby -rcgi -e 'CGI.new.out("charset"=>"utf-8"){"\xef\xbc\x8d\xef\xbd\x9e\xef\xbf\xa0\n"}' | tail -1 | od -tx1
> 0000000 ef bc 8d ef bd 9e ef bf a0 0a
> 0000012
> 
> Ruby 1.8.5 Preview 4
> 
> $ echo | /usr/local/bin/ruby -rcgi -e 'CGI.new.out("charset"=>"utf-8"){"\xef\xbc\x8d\xef\xbd\x9e\xef\xbf\xa0\n"}' | tail -1 | od -tx1
> 0000000 e2 88 92 e3 80 9c c2 a2 0a
> 0000011
> 
> ということで、NKF 使うのやめましょう。
> 
たしかにこれは困った挙動ですね。UTF-8対応を少なくとも
1.8.5では抜いておいた方がよさそうです。

今後の話になりますが、
私としては $KCODE="e" で、"charset"=>"utf-8"な場合のように、
ソースと出力の漢字コードが異なる場合は変換してあげた方が
いいと思いますが、いかがでしょうか?