From: "NARUSE, Yui" Date: 2010-03-21T21:39:29+09:00 Subject: [ruby-dev:40724] Re: URI methods for application/x-www-form-urlencoded 成瀬です。 (2010/03/21 0:36), Tanaka Akira wrote: > 2010年3月17日4:45 NARUSE, Yui: > >>> * URI.encode_www_component > >>> * 生成結果の encoding は引数の encoding になりますが、 >>> まずい場合もあるのではないでしょうか。 >>> 引数が UTF-16BE など ASCII非互換の場合にはあからさまにまずくて、 >>> 生成した % という文字が文字になりません。 >>> >>> これも実際には困らない気はします。 >> >> これも修正します。 > > 考えたのですが、これはうまくないようです。 > (中略) > つまり、ASCII-compatible character encoding を選ぶことになっているのには理由があります。 > 無視するのはよろしくありません。 > > 思い浮かぶ対策としては、以下くらいでしょうか。 > > * 自動的に UTF-8 に変換 > * ISO-2022-JP などと同じく、すべてのバイトを percent encoding > * 例外 > > なお、ISO-2022-JP など Unicode 以外の ASCII incompatible encoding ですべての > バイトを percent encoding にするという現状の動作は変えなくていいと思います。 困ったときは実装にあわせると言うことで、UTF-8 に変換することにしました。 また、先のメールで指摘された Shift_JIS のエンコードは、 "\x83\x41" は "%83A" となるように戻しました。 >>> * URI.decode_www_component > >>> * 第2引数として encoding を指定可能にすべきではないでしょうか。 > >> そうですね、デフォルトは UTF-8 にしましょうか。 > > デフォルトじゃなくて強制になっています。 おっと確かに、直しました > あと、TBLDECWWWCOMP_['+'] = ' ' if i == 0x20 が > ループの中にあるのは無駄でしょう。 直しました。 -- NARUSE, Yui