とみたです。
CGI#out で MIMEエンコード文字列がデコードされてしまいます。
cgi.rb 内部で使用している NKF.nkf で -m0 していないためですが、この時
期にこれがバグかどうかを議論している余裕はないかもしれません。
が、Ruby 1.8.5 からは今まで問題なかった UTF-8 でもこのようになってしま
うので、互換が無くなってしまいます。
$ echo | ruby -v -rcgi -e 'CGI.new.out("charset"=>"utf-8"){"=?euc-jp?b?xvzL3Ljs?=\n"}'
ruby 1.8.4 (2005-12-24) [i486-linux]
Content-Type: text/html; charset=utf-8
Content-Length: 22
=?euc-jp?b?xvzL3Ljs?=
$ echo | /usr/local/bin/ruby -v -rcgi -e 'CGI.new.out("charset"=>"utf-8"){"=?euc-jp?b?xvzL3Ljs?=\n"}'
ruby 1.8.5 (2006-08-09) [i686-linux]
Content-Type: text/html; charset=utf-8
Content-Length: 10
日本語
少なくとも utf-8 に関しては、1.8.4 までと同じく nkf を使用しないように
しておくか、せめて -m0 をつけるようにした方が良いと思います。
--- ruby-1.8.5/lib/cgi.rb.orig 2006-07-26 16:27:25.000000000 +0900
+++ ruby-1.8.5/lib/cgi.rb 2006-08-17 18:20:44.000000000 +0900
@@ -716,8 +716,6 @@
when /shift_jis/ni
content = NKF::nkf('-s', content)
options["language"] = "ja" unless options.has_key?("language")
- when /utf-8/ni
- content = NKF::nkf('-w', content)
end
end
--
とみたまさひろ <tommy / tmtm.org> 『Postfix辞典』ISBN:4798110353
3469 42CC 4D32 F53C AD98 65A5 8C37 FF09 69C1 6040