From: Fujioka Date: 2010-04-30T12:00:44+09:00 Subject: [ruby-dev:41105] Re: Rails3 M17N xibbarこと藤岡です。 > (6) クライアント(ブラウザ)からの入力 > > (6) これは私の知識が足りないところです。requestに含まれる情 > 報には適切な(信頼できる)エンコーディング情報がついている > のでしょうか。ついているのであれば、内部エンコーディング > へencode()してやればよいわけですが。 > > このことから考えると、Railsの設定ファイルに、 > > * アプリ内部エンコーディング > * データベース(ごとの)エンコーディング > > を、(たぶんデフォルトはUTF-8で)設定できるようにしてやれば、 > 外部インタフェースとしては十分のような気がします。で、Rails > 内部で必要に応じてencode()しまくるんでしょうね。 > > さて、大量に見落としがある気がして不安なのですが、みなさんの > ご意見を聴かせてください。上記のアイディアが寝言でないと思え > たら、Railsチームに提案します。 > この6についてはcgi.rbでも大分悩みました。 cgi.rbの結論としてはデフォルトの入力エンコーディングを 定義することなんですが、考慮がいろいろと足りていないと思います。 そして、まつもとさんが同じことを考えていたようですが、 私としてはいいのかどうか微妙です。 本当にしっかりやるのであれば、 1. 受けたときのencodingはASCII-8BITにする 2. 変換したいencodingがある項目はアプリ側で把握し、 UTF-8へのforce_encodingを試みる 3. 変換後、encodingのチェックをして、おかしいのは例外を投げる が理想的だと思います。 一緒にaccept-encodingみたいな列挙項目をpostしてもらうとか。 # ちなみに、encode()はASCII-8BITでは例外なので、 # cgi.rbでは全く使っていない。