Что такое процентное кодирование?+−
Процентное кодирование (также называемое URL-кодированием) заменяет символ на % с последующим двузначным шестнадцатеричным значением, повторяемым для каждого байта его представления в UTF-8. Именно так URL может передавать пробел (%20), амперсанд (%26) или эмодзи, не путая эти символы с собственным синтаксисом URL.
В чём разница между encodeURIComponent и encodeURI?+−
encodeURIComponent экранирует всё, кроме небольшого набора незарезервированных символов, что делает её правильным выбором для отдельного значения - параметра запроса или сегмента пути, - поскольку она также экранирует такие символы, как & и =, которые иначе были бы восприняты как структура URL. encodeURI предназначена для целого URL: она оставляет структурные символы вроде :, /, ?, & и # нетронутыми, чтобы URL продолжал работать, и экранирует только те символы, которые URL действительно не может содержать, например пробелы. Пропуск целого URL через encodeURIComponent ломает его, поскольку это также экранирует косые черты и двоеточия.
Стоит ли всё ещё использовать escape() и unescape()?+−
Нет. Обе функции были объявлены устаревшими ещё в первой редакции стандарта JavaScript, которая также ввела encodeURIComponent, потому что escape() не кодирует не-ASCII символы так, как ожидают HTTP и современные URL - для всего, что выходит за пределы Latin-1, она использует нестандартную форму %uXXXX, которую decodeURIComponent не может прочитать обратно. Этот инструмент сохраняет эту опцию только для того, чтобы вы могли изучить, что произвела устаревшая система.
Почему + в строке запроса превращается в пробел?+−
Строки запроса исторически происходят от отправки HTML-форм, использующих формат application/x-www-form-urlencoded: он кодирует настоящий пробел как + вместо %20, и анализатор этого инструмента (как и URLSearchParams в JavaScript) при декодировании воспринимает оба варианта как пробел. Если значению действительно нужен буквальный знак плюса, его самого нужно закодировать в процентном виде как %2B.
Что происходит с повторяющимся параметром вроде ?tag=a&tag=b?+−
Ничего не теряется - этот инструмент сохраняет каждое вхождение по порядку в виде отдельной строки таблицы параметров запроса, точно так же, как большинство серверных фреймворков собирают повторяющийся ключ в список. Редактирование или удаление одной строки не затрагивает остальные.
Почему анализатор предположил https:// для моего URL?+−
У строки вроде example.com/путь нет протокола, поэтому ни браузер, ни этот инструмент не могут понять, веб-адрес это, другой протокол или просто текст. Вместо того чтобы отклонить её, анализатор предполагает https://, чтобы вы всё же могли её изучить и отредактировать - подсказка появляется каждый раз, когда это происходит, и вы можете исправить поле Протокол, если имелась в виду другая схема.