In article <4AA78D67.3010501 / it.aoyama.ac.jp>,
  "Martin J. D?rst" <duerst / it.aoyama.ac.jp> writes:

> 一般の文字 (unreserved, a-zA-Z0-9など) はエスケープしてもしなくても同じ 
> のはず。したがって %41 -> A はいつでも可能です。URI の文法内に意味をなす 
> 文字 (delimiters) はエスケープされたものとエスケープされてないものでは意 
> 味が違いますので、いつでも変換できるとは限られません。たとえば
> http://example.com/abc#defhttp://example.com/abc%23def は根本的に違 
> います。前者では #def は fragment で、後者では abc#def という path (ファ 
> イルまただディレクトリなど) である。無差別に %23 -> # をするのは間違いで 
> ある。decode でもどの部分を decode するによっていろいろ違ってくる。

その decode の違いによって、どこかの部分では decodeURI が役
に立つということでしょうか?

%25 を % にして、かつ、%40 を %40 のままにするという
decodeURI がどういう状況で使うのかという話なんですが、
具体的にはどの部分で decodeURI が役に立つんでしょう?

> 'abc#def', :fragment -> 'abc#def' 又は 'abc%23def' # fragment 内では # 
> も %23 も同様

その考え方には賛成なのですが、残念なことに RFC 3986 では
fragment には # は入れられません。

      fragment    = *( pchar / "/" / "?" )

      pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

      sub-delims  = "!" / "$" / "&" / "'" / "(" / ")"
                  / "*" / "+" / "," / ";" / "="

変わったりしたんでしょうか?

変えるなら、

      fragment    = *( pchar / "/" / "?" / "#" )

とするのでしょうが。

そういえば、"#" だけじゃなくて "[" と "]" も入れたほうがいい
かもしれませんね。fragment に入れても区切りを間違えることは
ないので。fragment だけじゃなくて query とか他にも入れられる
と思いますが。

> 'abc#def', :uri -> 'abc#def' # URI 全体では # は fragment 前の区切りなの 
> で、%23 はだめ

RFC 3986 の URI は fragment まで含みますので、問題ありません。
もちろん、def は fragment の意味になりますが。

      URI         = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

まぁ、この場合は scheme がないので相対参照になりますが、それ
でも fragment が入ることには違いありません。

      relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

もしかして、RFC 2396 での話ですか?
-- 
[田中 哲][たなか あきら][Tanaka Akira]