From: Fujioka Date: 2008-09-21T15:17:28+09:00 Subject: [ruby-dev:36422] Re: [Feature #542] cgi.rb : CGI::unescape return encoding 藤岡です。 > 私としてはチェックを入れた方がいいと思っています。 > cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>false) > こんな感じでできると楽かなと。 > ファイルに関してはすべてASCII-8BITがいいと思っています。 > * CGI.newのオプションでHashも取れるようにする (現状は"html3"などのStringのみ) * CGIに@@encodingというクラス変数を用意し、default値は"UTF-8"とする * CGI::encodingとCGI::encoding=というメソッドを用意し、 @@encodingのセッターとゲッターにする * CGI.newされたときにオプションで CGI.new(:encoding=>"EUC-JP")などと指定されない場合は @@encodingの値を@encodingに代入する * 各々のエレメントの値は@encodingの値でforce_encodingし、 valid_encoding?する。ただし、fileだけはASCII-8BITとする。 * オプションのときに:element_encoding_check=>falseが与えられたときは エンコーディングチェックしない。 * encodingのチェックをして正しくない場合はASCII-8BITに force_encodingしてしまう 以上のような仕様ではいかがでしょうか? サンプルベースで行くと、 require 'cgi' @cgi=CGI.new("html3") とやった場合は受け取った値はUTF-8とみなし、encodingのチェックを入れる。 タグメーカーはhtml3とする。 EUC-JPにする場合は require 'cgi' CGI::encoding="EUC-JP" @cgi=CGI.new("html3") もしくは require 'cgi' @cgi=CGI.new(:tag_maker=>"html3",:encoding=>"EUC-JP") とする。エンコーディングのチェックをしない場合は require 'cgi' @cgi=CGI.new(:tag_maker=>"html3",:encoding=>"EUC-JP",:element_encoding_check=>false) といったようにインスタンスへオプションで渡す。 以上のような使い勝手になります。