xibbarこと藤岡です。

> |本当にしっかりやるのであれば、
> |1. 受けたときのencodingはASCII-8BITにする
> 
> あ、そうそう。RackやDBドライバはASCII-8BITを返すべきではない
> かとかんがえています。
> 
画像ファイルをアップロードした時のencodingはどうしますか?
POSTもGETもバイナリデータであって文字列じゃないと私は思うのですが。
ファイルだけ例外的に扱った方がいいというお考えですか?

> |2. 変換したいencodingがある項目はアプリ側で把握し、
> |   UTF-8へのforce_encodingを試みる
> 
> UTF-8なんですか。私はアプリエンコーディングを用いるべきだと思っ
> ていたのですが。ISO-8859-1なページからPOSTされたリクエストで
> もUTF-8で来るというのが最近のブラウザの挙動なんでしょうか。もっ
> ともこの辺はバッドノウハウもたくさんありそうですが。
> 
> 一般的にどのようにリクエストのエンコーディングを推測している
> のでしょう。ヒューリスティック?
> 
いや、推測出来ません。推測出来ないので、
受け手でこのencodingで来るはずだと構えるしかありません。

> |3. 変換後、encodingのチェックをして、おかしいのは例外を投げる
> |が理想的だと思います。
> |一緒にaccept-encodingみたいな列挙項目をpostしてもらうとか。
> 
> このアプローチはアプリ側での対応が必要なので望ましくありませ
> んね。確実でしょうけど。
> 
これはフレームワークが吸収でいいと思います。

> |# ちなみに、encode()はASCII-8BITでは例外なので、
> |# cgi.rbでは全く使っていない。
> 
> 元のエンコーディングがわかれば、encode()の第2引数を指定する
> ことで例外を回避できます。
> 
これは知らなかった。orz