Подтвердить что ты не робот

Происхождение о том, почему "%20" используется как пробел в URL-адресах

Мне интересно узнать, почему "%20" используется как пробел в URL-адресах, в частности, почему используется %20 и почему мы даже в этом нуждаемся.

4b9b3361

Ответ 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-адресу.