3

エンコードされた URL について混乱しています。

たとえば、ブラウザを書くとき:

stackoverflow.com/questions

ページを正常に表示できます。

しかし、私が書くとき:

stackoverflow.com%2Fquestions

見ることができません。

%2Fは「/」を意味するため、これが正しく機能しない理由を理解したいと思います。

私が知りたい理由は、エンコードされた URL を取得していて、それを受け取った直後にその URL をデコードしてエラー ページが表示されないようにする方法がわからないからです。

4

5 に答える 5

12

はの/1 つですpercent-encoding reserved characters。URL はpercent-encoding reserved characters、構文を定義するために使用します。これらの文字が URL 内の特別な役割で使用されていない場合にのみ、エンコードする必要があります。

パーセント エンコーディングの予約文字:

!       *       '       (       )       ;       :       @       &       =       +       $       ,       /       ?       #       [       ]
%21     %2A     %27     %28     %29     %3B     %3A     %40     %26     %3D     %2B     %24     %2C     %2F     %3F     %23     %5B     %5D
于 2011-11-13T21:42:25.437 に答える
5

%2F is a URL escaped /. It means, treat / as a character, not a directory separator.

In essence, it is looking for a domain stackoverflow.com/questions, not the domain stackoverflow.com with the path questions.

于 2011-11-13T21:40:02.910 に答える
1

%2F は、パラメーターに / を含めたいが、ブラウザーに別のディレクトリ/ルートに移動させたくない場合に記述します。

したがって、ファイル パス 'root/subdirectory' がクエリ文字列パラメーターとして渡された場合は、次のようにエンコードします。

http://www.testurl.com/page.php?path=root%2Fサブディレクトリ

それよりも

http://www.testurl.com/page.php?path=ルート/サブディレクトリ

于 2011-11-13T21:40:08.833 に答える
1

URL エンコードは、たとえば、'/' などの特殊文字を含む HTML フォームからの文字列 URL パラメータをエンコードするために使用されます。「stackoverflow.com%2Fquestions」と書くのは間違っています。この場合、「/」は URL 自体の一部であり、エンコードしてはなりません。

于 2011-11-13T21:43:21.763 に答える
1

%2Fはエスケープされた文字エンティティです。これは、RFC 1630 の 8 ページで指定されているように/、ディレクトリ階層を表す文字ではなく、名前に含まれることを意味します。

于 2011-11-13T21:44:00.407 に答える