藤岡です。 > こんな問題が出ました。ソースも 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"な場合のように、 ソースと出力の漢字コードが異なる場合は変換してあげた方が いいと思いますが、いかがでしょうか?