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 <fuj / rabbix.jp> 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 <tietew / tietew.net>
Blog: http://www.tietew.jp/
PGP: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA