まつもと ゆきひろです

In message "Re: [ruby-dev:41105] Re: Rails3 M17N"
    on Fri, 30 Apr 2010 12:00:44 +0900, Fujioka <fuj / rabbix.jp> writes:

|本当にしっかりやるのであれば、
|1. 受けたときのencodingはASCII-8BITにする

あ、そうそう。RackやDBドライバはASCII-8BITを返すべきではない
かとかんがえています。

|2. 変換したいencodingがある項目はアプリ側で把握し、
|   UTF-8へのforce_encodingを試みる

UTF-8なんですか。私はアプリエンコーディングを用いるべきだと思っ
ていたのですが。ISO-8859-1なページからPOSTされたリクエストで
もUTF-8で来るというのが最近のブラウザの挙動なんでしょうか。もっ
ともこの辺はバッドノウハウもたくさんありそうですが。

一般的にどのようにリクエストのエンコーディングを推測している
のでしょう。ヒューリスティック?

|3. 変換後、encodingのチェックをして、おかしいのは例外を投げる
|が理想的だと思います。
|一緒にaccept-encodingみたいな列挙項目をpostしてもらうとか。

このアプローチはアプリ側での対応が必要なので望ましくありませ
んね。確実でしょうけど。

|# ちなみに、encode()はASCII-8BITでは例外なので、
|# cgi.rbでは全く使っていない。

元のエンコーディングがわかれば、encode()の第2引数を指定する
ことで例外を回避できます。

                                まつもと ゆきひろ /:|)