web-dev-qa-db-ja.com

「%20」がURLのスペースとして使用される理由の起源

「%20」がURLのスペースとして使用される理由、特に%20が使用された理由、そもそもなぜそれが必要なのかを知りたいと思っています。

35
orange

パーセントエンコーディング と呼ばれます。一部の文字はURIに含めることができないため(たとえば、URLフラグメントを示す#)、使用可能な文字で表されます(#%23になります)

同じ記事からの抜粋を次に示します。

特定のコンテキストで予約済みセットの文字(「予約済み文字」)が特別な意味(「予約済みの目的」)を持ち、URIスキームがその文字を他の目的に使用する必要があると言っている場合、その文字percent-encodedでなければなりません。 予約文字をパーセントエンコードするには、文字をASCIIの対応するバイト値に変換し、その値を16進数字のペアとして表します。エスケープ文字として使用されるパーセント記号(「%」)が前にある数字は、予約文字の代わりにURIで使用されます(非ASCII文字の場合は、通常、UTF-8のバイトシーケンスに変換され、各バイト値は上記のように表されます。

スペース文字の文字コードは32です:

> ' '.charCodeAt(0)
32

Base-16の20は次のとおりです。

> ' '.charCodeAt(0).toString(16)
"20"

その前にパーセント記号を付けると、%20が得られます。

51
Blender

URLには/が特別なパス区切り文字であるなどの厳密な構文規則があるため、URLにスペースを含めることはできず、すべての文字はASCIIの特定のサブセットである必要があります。これらの制限に関係なくURLに任意の文字を埋め込むために、バイトをパーセントでエンコードできます。バイトx20は、ASCIIエンコード(および他のほとんどのエンコード))内のスペースを表します。したがって、%20はURLエンコードされたバージョンです。

1
deceze

パーセントエンコーディングを使用します。 Percent Encoding RFCの一部を見ることができます niform Resource Identifier(URI):Generic Syntax

パーセントエンコーディングメカニズムは、そのオクテットの対応する文字が
許可されたセット、またはの区切り文字として、またはその中で使用されている
成分。パーセントエンコードされたオクテットは文字としてエンコードされます
トリプレット、パーセント文字「%」の後に2つが続く
そのオクテットの数値を表す16進数。ために
例、「%20」はバイナリオクテットのパーセントエンコーディングです。
"00100000"(ABNF:%x20)、US-ASCIIではスペースに対応
文字(SP)。

0
Eren T.