藤岡です。 >>>> 5. かまわず指定された encoding をつける >>>> >>>> じゃないですかね。 >>>> String#valid_encoding? で調べるとか、後で対処する方法はあるのですから。 >>> bad knowhow になりそうで怖いです。 >>> >> bad knowhowになるぐらいだったら実装したいですね。 >> >>> cgi = CGI.new('UTF-8') >>> unless cgi.param.join.valid_encoding? >>> print cgi.header('status' => '400 Bad Request') >>> print 'Bad Request' >>> exit >>> end >>> >>> 等のコードを毎度書くか俺ライブラリにする必要があるわけで。 >>> >> これだとEUC-JPとUTF-8を送りつけられたときにjoinの時点で例外なような。 > > force_encoding されている、という前提なので、例外はないはず。 > >> newするときのオプションで期待する挙動を切り替えられると >> 使いやすいでしょうかね? >> >> cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>true) > > デフォルトチェックを希望。 > 混在したor不正なエンコーディングを受け付けることの方が例外的だと思います。 > アップロードされたバイナリはもともと除外な訳で。 > 私としてはチェックを入れた方がいいと思っています。 cgi=CGI.new(:encoding=>"UTF-8",:element_encoding_check=>false) こんな感じでできると楽かなと。 ファイルに関してはすべてASCII-8BITがいいと思っています。