In article <4AA9F88A.3040404 / airemix.jp>,
  "NARUSE, Yui" <naruse / airemix.jp> writes:

>>> userinfo に含まれる、ユーザ名やパスワードに @ が含まれていたので、
>>> IRI っぽいものにされた段階でエスケープされたのではないでしょうか。
>> 
>> そうやってできた %40 は decodeURI("%40") で @ に戻らないんで
>> すが、それでいいんでしょうか。
>
> URI を decode しても、その decode 結果は IRI っぽいものなので、
> そのルールで禁止されている文字 (@ はそこに含まれるらしい) は
> 戻すことはできないように思います。
> つまり、URI を分割して component にしてから、
> decodeURIComponent (またはそれに類するもの) を適用して、
> 戻すことになるのでしょう。

禁止されているならもともと存在しないんじゃないでしょうか。

「IRI っぽいもの」の定義がはっきりしないので勘違いしているか
もしれませんが。

> 気になっただけなのですが、ここで encode ではなく escape を
> 使っているのは何か意図があってのことですか?

CGI.escape とかの影響ですかねぇ。

API としては、URI.escape と URI.encode が同じものなので、そ
れにあわせて両方定義するものだと思っていましたが。
-- 
[田中 哲][たなか あきら][Tanaka Akira]