From: "NARUSE, Yui" Date: 2009-09-10T18:33:36+09:00 Subject: [ruby-dev:39293] Re: Is URI.decode() broken? 2009/09/09 20:11, "Martin J. Dürst" wrote: > 一般の文字 (unreserved, a-zA-Z0-9など) はエスケープしてもしなくても同じ > のはず。したがって %41 -> A はいつでも可能です。 これらは入力に含まれる % が既にエスケープ済みであることを 前提としています。つまり、"%41" という文字列を表したい場合は、 "%2541" という形で渡ってきているという了解が置かれています。 > 以前ちょっと考えたのはその辺を第二の引数で指定できるようなメソッドでし > た。引数には「これだけは decode しないで」、「(delimiter/reserved の内) > これだけは decode して」、「この部分用なので、適当にやってくれ」という三 > 種類を考えたが、どちらの方がいいのか結論は出してないです。 URI.escape(str, pattern) がそれですね。 obsolete にしちゃいましたけど。 実際問題、そんなところまで考えないといけないのって、 不健全だと思うんですよね。 > もうひとつ、URI::Generic.build など先ほどみたときに考えた。引数の数がや > たら多く、多くの場合、固定の部分がかなりあるのではないかと思いました。そ > ういうことを考えると例えば > URI::Generic.build 'http://www.google.com/search', query: '2+3' > で http://www.google.com/search?q=2%2B3 を作ってもらえるのでしたら、 > > URI::Generic.build 'http', '', 'www.google.com', '', '', 'search', '', > '2+3', '' > よりかなり便利のではないでしょうか。 URI(str, hash) とか、uri.add_query(hash) とかがあったらいいかなぁと、 今は考えています。細かいところはもうちょっと検討しますが。 -- NARUSE, Yui