Мне интересно узнать, почему "%20" используется как пробел в URL-адресах, в частности, почему используется %20 и почему мы даже в этом нуждаемся.
Происхождение о том, почему "%20" используется как пробел в URL-адресах
Ответ 1
Он назвал процентное кодирование. Некоторые символы не могут быть в URI (например, #
, поскольку он обозначает фрагмент URL-адреса), поэтому они представлены символами, которые могут быть (#
становится %23
)
Вот выдержка из той же статьи:
Когда символ из зарезервированного набора ( "зарезервированный символ" ) особый смысл ( "зарезервированная цель" ) в определенном контексте и URI схема говорит, что необходимо использовать этот символ для некоторого другого цели, то символ должен быть закодирован в процентах. Процентное кодирование зарезервированного символа включает преобразование символа в его соответствующее значение байта в ASCII, а затем представляя это значение как пару шестнадцатеричных цифр. Цифры, которому предшествует знак процента ( "%" ), который используется как escape-символ, затем используются в URI вместо зарезервированного символа. (Для не-ASCII-символ, он обычно преобразуется в свою последовательность байтов в UTF-8, а затем каждое значение байта представлено, как указано выше.)
Символьный код символа пробела 32
:
> ' '.charCodeAt(0)
32
Что такое 20
в базе-16:
> ' '.charCodeAt(0).toString(16)
"20"
Отметьте знак процента перед ним, и вы получите %20
.
Ответ 2
Он использует процентное кодирование. Вы можете увидеть процентное кодирование части RFC для унифицированный идентификатор ресурса (URI ): Общий синтаксис
Механизм кодирования процентов используется для представления октета данных в компонент, когда соответствующий символ октета находится за пределами разрешено или используется как разделитель или внутри,
компонент. Октет, закодированный в процентах, кодируется как символ триплет, состоящий из процентного символа "%", за которым следуют два шестнадцатеричные цифры, представляющие это числовое число октетов. Для
Например, "%20" - это процентное кодирование для двоичного октета
"00100000" (ABNF:% x20), который в US-ASCII соответствует пространству символ (SP).
Ответ 3
Поскольку URL-адреса имеют строгие синтаксические правила, такие как /
, являются особым символом разделителя пути, пробелы не допускаются в URL-адресе, а все символы должны быть определенным подмножеством ASCII. Чтобы вставлять произвольные символы в URL-адреса независимо от этих ограничений, байты могут быть закодированы в процентах. Байт x20
представляет собой пробел в кодировке ASCII (и большинстве других кодировок), поэтому %20
является его кодированной по URL-адресу.