From: Tietew Date: 2008-09-17T12:25:52+09:00 Subject: [ruby-dev:36345] Re: [Feature #542] cgi.rb : CGI::unescape return encoding On Wed, 17 Sep 2008 11:49:12 +0900 In article <48D071E7.1090907@rabbix.jp> [[ruby-dev:36342] Re: [Feature #542] cgi.rb : CGI::unescape return encoding] Fujioka wrote: > 藤岡です。 > > >> 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不正なエンコーディングを受け付けることの方が例外的だと思います。 アップロードされたバイナリはもともと除外な訳で。 -- Tietew Blog: http://www.tietew.jp/ PGP: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA