明らかに%をエンコードする必要があります。標準に関するウィキペディアの記事には次のように書かれています。
パーセント( "%")文字は、パーセントエンコードされたオクテットのインジケーターとして機能するため、そのオクテットをURI内のデータとして使用するには、「%25」としてパーセントエンコードする必要があります。
予約文字としても記載されていないのはなぜですか?明らかに、URIのコンテキストで特別な何かを示すために予約されています...
明らかに%をエンコードする必要があります。標準に関するウィキペディアの記事には次のように書かれています。
パーセント( "%")文字は、パーセントエンコードされたオクテットのインジケーターとして機能するため、そのオクテットをURI内のデータとして使用するには、「%25」としてパーセントエンコードする必要があります。
予約文字としても記載されていないのはなぜですか?明らかに、URIのコンテキストで特別な何かを示すために予約されています...
「予約済み」文字は、URI のさまざまな部分の間の区切り文字として使用できるようにするためのものです。パーセント記号は、パーセントエンコーディングで使用されるため、そのためには使用されません — そのためには使用できません.
「予約されていない」文字の別のリストがあり、パーセント記号もそれらの1つではないことを指摘すると、問題を明確にするのに役立つ場合があります。
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
( http://www.ietf.org/rfc/rfc3986.txtから、12 ページの下部)。つまり、URI のコンテキストでは、「予約済み」には予想以上に具体的な意味があります。:-)
パーセント記号は、文法規則に関与しているため、すでに予約されていますpct-encoded
。また、この段落はこの主題について啓発的であるように思われます:
URI は、数字、文字、およびいくつかのグラフィック シンボルで構成される限られた文字セットから構成されます。これらの文字の予約されたサブセットは、URI 内の構文コンポーネントを区切るために使用できますが、予約されていないセットと区切り文字として機能しない予約文字の両方を含む残りの文字は、各コンポーネントの識別データを定義します。
これは、パーセント記号自体が実際にパーセント エンコーディング用に予約されていることを示唆しています (URI 内の構文コンポーネントを区切らないため)。あなたの元の解釈は正しいです。それは意味論の問題だと思います。
予約文字は、URI で特別な意味を持つため、特別な目的以外で使用する場合は何らかの方法でエスケープする必要がある文字です。
パーセント文字は、URI 内で特別な意味を持ちません。これが、エスケープ/エンコーディング文字として適している理由です。
エンコーディングに使用されているという事実は、パーセントをパーセントでエンコードすることによって、パーセント自体をエスケープする必要がある唯一の理由です。
これは文字のエスケープに似ています。バックスラッシュ\
は\\
、\t
または\n