Bug #475
closed
Added by xibbar (Takeyuki FUJIOKA) over 16 years ago.
Updated over 13 years ago.
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
=begin
1.9 になっても当面は nkf が削除される予定はありませんので、
無理に依存を削る必要はないんじゃないですかね。
アレはテキストフィルタであって、文字コード変換しかできないわけではないので¶
language の自動付与はー、削っていいかもしれませんが、わざわざ消す必要があるのかなぁ。
RubyI18N が出てくると String が言語を持ったりするんですかね。¶
content の文字コード自動変換は削っちゃうとまずいんじゃないですかねぇ。
ここで String#encode を使うようにするとか、日本語以外にも対応するとかだとアリかもしれませんね。
=end
=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
- Status changed from Open to Closed
=begin
特にメンテされるわけでもないのに、不用意に自動変換削除のような互換性を損なう変更を加えると、
ぎゃっと言う人がいそうなのを気にしていたんですが、うーん。
っと、ふじおかさんは CGIAlt への置き換えを前提で仰っているのか。
cgi.rb に自動変換を期待しているような人には、今のうちにぎゃっと言ってもらった方がいいかなぁ。
=end
=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
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0