From: Fujioka Date: 2006-05-18T14:58:14+09:00 Subject: [ruby-dev:28649] cgi.rbのUTF-8対応について 藤岡です。 cgi.rbではEUC-JPやShift_JISなどはcharsetを見て 出力を適切なコードに変換するようですが、 これはUTF-8には対応していないようです。 ソースを見ると、NKFで変換しているだけのようですので、 以下のようにUTF-8にも対応していていただけると ソースをEUCで書いて、出力をUTF-8にしている人は 幸せかもしれません。と思って書いてみました。 もし、NKFがUTF-8に対応していない場合はどうなるかというと、 テスト結果はwオプションを無視するだけでしたので、 NKFのUTF-8対応されていないマシンでもUTF-8にならないだけで、 例外の発生にはならないので、問題は起こらないかと思います。 Vine-2.6(ruby-1.6.7,nkf-1.92)で実験してみました。 いかがでしょうか。 $ diff -uNr cgi.rb.org cgi.rb --- cgi.rb.org 2005-10-01 00:01:11.000000000 +0900 +++ cgi.rb 2006-05-18 14:40:51.097041304 +0900 @@ -716,6 +716,9 @@ 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) + options["language"] = "ja" unless options.has_key?("language") end end -- fujioka