URI(特にHTTP URL)には1つ以上のスペース文字を含めることができますか?URLがしなければならないエンコードされるのは、+
単に一般的に従う慣例なのでしょうか、それとも正当な代替手段なのでしょうか?
特に、スペースを含むURLはしなければならないエンコードされますか?
質問の動機:Web サイトのベータ テスト中に、一部の URL にスペースが含まれていることに気付きました。Firefox は適切に処理しているようで、驚きました。しかし、開発者に RFC を示して、それらの URL を修正する必要性を感じてもらいたいと思いました。
ベストアンサー1
に従ってRFC 1738:
安全ではありません:
キャラクターが安全でない理由はいくつかあります。スペース文字は、URL が転記またはタイプセットされたり、ワードプロセッサ プログラムで処理されたりするときに、重要なスペースが消えたり、重要でないスペースが導入されたりする可能性があるため、安全ではありません。文字 および は
"<"
、">"
フリー テキスト内の URL を囲む区切り文字として使用されるため安全ではありません。引用符 ("""
) は、一部のシステムで URL を区切るために使用されます。 文字 は"#"
安全ではなく、常にエンコードする必要があります。これは、この文字が World Wide Web や他のシステムで、URL と、それに続くフラグメント/アンカー識別子を区切るために使用されるためです。 文字 は、他の文字のエンコードに使用されるため安全ではありません。その他の文字は、ゲートウェイやその他のトランスポート エージェントがこのような文字を変更することが"%"
あるため安全ではありません。これらの文字は"{"
、、、、、、、、、、、およびです。"}"
"|"
"\"
"^"
"~"
"["
"]"
"`"
安全でない文字はすべてURL内で常にエンコードされる必要がありますたとえば、
"#"
通常はフラグメント識別子やアンカー識別子を扱わないシステムでも、文字は URL 内でエンコードされる必要があります。そうすることで、フラグメント識別子やアンカー識別子を使用する別のシステムに URL をコピーした場合でも、URL エンコードを変更する必要がなくなります。