Bug #475
closedcgi.rbにNKFに依存したコードが入っている
Description
=begin
m17nが入ってNKFとかはもう使われないはずなのと、
日本語だけ自動的にheaderのlanguageにjaを入れるというのも
おかしな話だと思うので1.9からは削除した方がいいと思います。
Index: lib/cgi.rb¶
--- lib/cgi.rb (リビジョン 18779)
+++ lib/cgi.rb (作業コピー)
@@ -715,21 +715,6 @@
options = { "type" => options } if options.kind_of?(String)
content = yield
- if options.has_key?("charset")
-
require "nkf"
-
case options["charset"]
-
when /iso-2022-jp/ni
-
content = NKF::nkf('-j -m0 -x', content)
-
options["language"] = "ja" unless options.has_key?("language")
-
when /euc-jp/ni
-
content = NKF::nkf('-e -m0 -x', content)
-
options["language"] = "ja" unless options.has_key?("language")
-
when /shift_jis/ni
-
content = NKF::nkf('-s -m0 -x', content)
-
options["language"] = "ja" unless options.has_key?("language")
-
end
- end
- options["length"] = content.bytesize.to_s
output = stdoutput
output.binmode if defined? output.binmode
=end
Updated by naruse (Yui NARUSE) over 16 years ago
Updated by xibbar (Takeyuki FUJIOKA) over 16 years ago
=begin
すみません、いずれは削除されるのかと思っていました。
languageの自動付与は日本語だけをサポートするのもどうかと思います。
しかも、UTF-8は自動付与されないですし。
contentの文字コード自動変換も日本語だけサポートするのはどうかと思います。
Rubyが日本語のための言語だったらそれでいいのかもしれませんが、
マルチリンガルを目指すんだったらない方がいいと思います。
もしくは全部自動変換するようにするとか。
私が思うにはこの自動変換機能よりも自分で
やってもらったほうがいいと思うんですけど。
cgi.out("type"=>"text/html","charset"=>"iso-2022-jp"){content}
と書いていたのが
cgi.out("type"=>"text/html; charset=iso-2022-jp",language=>"ja"){content.encode("iso-2022-jp")}
になるんだと思います。
すべての言語に対して公平になると思うのですが、あまりよくないんでしょうかね?
=end
Updated by naruse (Yui NARUSE) over 16 years ago
- Status changed from Open to Closed
=begin
特にメンテされるわけでもないのに、不用意に自動変換削除のような互換性を損なう変更を加えると、
ぎゃっと言う人がいそうなのを気にしていたんですが、うーん。
っと、ふじおかさんは CGIAlt への置き換えを前提で仰っているのか。
cgi.rb に自動変換を期待しているような人には、今のうちにぎゃっと言ってもらった方がいいかなぁ。
=end
Updated by xibbar (Takeyuki FUJIOKA) over 16 years ago
=begin
以前に
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/29284
こんなやり取りがあって、utf8は自動変換から抜かれました。
そして、今回は全部抜くチャンスかと思いました。
ギャッと言う人はある程度はいるとは思うのですが、
CGIは出力をUTF-8で出している人はUTF-8で受け取りますし、
SJISで出している人はSJISで受け取ります。つまり変換は必要ありません。
そして、内部的(DB的)にはUTF-8なんだけど入出力はSJISなんだという場合などに
変換してあげる必要があるわけです。そういう場合は自動変換じゃなくて、
変換するコードを書いてもらった方がいいと思っています。
CGIAltへの置き換えはcgi.rbとそのテストを完成させてから考えた方がいいと思うようになりました。
=end
Updated by Tietew (Toru Iwase) over 16 years ago
=begin
On Sun, 24 Aug 2008 23:42:16 +0900
In article 873akuo4hl.wl%fumiyas@osstech.jp
[[ruby-dev:35943] Re: [Bug #475] cgi.rbにNKFに依存したコードが入っている]
SATOH Fumiyasu fumiyas@osstech.jp wrote:
伝聞ですが、ページのエンコーディングとは異なる
エンコーディングで HTTP GET, POST するブラウザもある
みたいですが。
いまどき、そんなブラウザは使っている方が悪いのでは。
脆弱性も盛大にありそうです。
--
Tietew tietew@tietew.net
Blog: http://www.tietew.jp/
PGP: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA
=end