From: KOSAKI Motohiro Date: 2009-09-07T09:37:03+09:00 Subject: [ruby-dev:39242] Re: Is URI.decode() broken? 小崎@思いつきを適当に書いてみるテスト > > 長期的には encodeURI あたりと置き換えたいところですが、 > > これが指しているのは、JavaScript の encodeURI だと思うんです > が、それってそんなにお薦めなんですか? > > ECMAScript Language Specification > http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf > > を見る限りは URI.escape と同様に、URI 全体を受け付けることを > 意図しているように思えます。そうすると、区切りを意図した文字 > とデータを意図した文字があいまいになって、意図にあったエスケー > プができません。 APIとしての筋の良さとは別立てとして、javascriptでencode or decodeするので まったく同じ使用のencocde/decode関数がRubyにもあるとうれしい。 というのはあるかも あと、encodeURIComponent()は、その名の通りURIの個々のコンポーネントを 引数に取る事を念頭においた関数で、javascriptではString型しかないから、 URIをコンポーネントに分割する責務を利用者に投げている。 URI型を作るなら、もうちょっとインテリジェントにやって欲しいという気もしなくはないかも。 よく知らないけど、URI.split()があるからには、URIの構造をしってるクラスなんですよね?この人。 以下、余談 すでに記憶がおぼろげなのですが escape()関数だけは細かい仕様が ブラウザ毎に違ったと思うので用意しないほうがよいかも。 記憶が正しければ、escape()が挙動バラバラだったので、ECMAScriptの 規格からescape()が落ちて、encodeURI() と encodeURIComponent()が 追加された、という時系列のはず。 イマドキは挙動統一されてるのかもしれないが、それも未検証