Об этом инструменте
Кодирование URL (также называемое процентным кодированием) заменяет символы, которые имеют особое значение или не допускаются в URL, знаком процента, за которым следует их шестнадцатеричное значение байта — пробел становится %20, амперсанд становится %26 и так далее. JavaScript предоставляет две разновидности: encodeURIComponent экранирует практически всё, включая зарезервированные разделители, такие как &, =, ?, и /, что делает его подходящим для одиночного значения, например параметра строки запроса, тогда как encodeURI оставляет структурные символы полного URL нетронутыми, чтобы адрес оставался работоспособным.
Используйте инструмент, чтобы безопасно поместить значение в строку запроса, отладить ссылку, в которой специальные символы или Unicode оказались искажены, или прочитать, что на самом деле содержит закодированный URL перенаправления или отслеживания. Переключитесь в режим Decode, чтобы превратить %20 и им подобные обратно в читаемый текст, выберите область Component или Full URL в соответствии с тем, как была получена строка, и включите «+ as space», когда декодируете строки запроса в стиле форм, где пробелы были отправлены как знаки плюс.
encodeURIComponent экранирует зарезервированные разделители &, =, ?, и /, тогда как encodeURI оставляет их нетронутыми — используйте Component для одиночного значения, а Full URL только для полного адреса.
Часто задаваемые вопросы
В чём разница между encodeURIComponent и encodeURI?
encodeURIComponent экранирует зарезервированные символы URL, такие как &, =, ?, и /, поэтому он предназначен для одиночного значения, например одного параметра строки запроса. encodeURI сохраняет эти структурные символы, поэтому он предназначен для кодирования полного URL без его повреждения.
Почему + иногда означает пробел в URL?
В строках запроса application/x-www-form-urlencoded (так, как HTML-формы отправляют данные) пробелы кодируются как +, а не как %20. Стандартные декодеры URL не преобразуют + обратно в пробел, поэтому включайте параметр «+ as space» при декодировании строк запроса в стиле форм.
Что означает «Malformed percent-encoding» при декодировании?
Это означает, что входные данные содержат %, за которым не следуют две допустимые шестнадцатеричные цифры, либо неполную многобайтовую последовательность, например %E0%A4%A. Декодер не может интерпретировать эти байты, поэтому он сообщает об ошибке вместо того, чтобы возвращать частичный, повреждённый текст.