Кодировать и декодировать URL
Закодируйте текст для URL через проценты или декодируйте его обратно. Три разные схемы кодирования и построчная обработка списка.
Перетащите файлы сюда
.txt · до 5 МБ
Как закодировать и раскодировать URL
- 1
Вставьте текст или список URL
Одно значение или пятьдесят, по одному в строке. Можно загрузить .txt, читаются и UTF-8, и Windows-1251.
- 2
Выберите режим и схему кодирования
Component для одного значения, full URI для целого адреса, form-urlencoded для тела POST-запроса.
- 3
Скопируйте результат
Скопируйте прямо из поля или скачайте как текстовый файл. Структура строк в обоих случаях сохраняется.
Три схемы — и почему от выбора зависит работоспособность ссылок
Component-encoding экранирует все, что не относится к категории unreserved, в том числе : / ? # & =. Это правильно для одного значения, которое попадает внутрь строки запроса, и неправильно для целого адреса: если закодировать https://example.com/a?b=1 как component, каждый структурный символ превратится в последовательность с %, и строка перестанет быть URL. Full-URI-encoding оставляет эти структурные символы как есть и экранирует только пробелы и не-ASCII. Это нужно, когда на вход приходит целый адрес. Form-urlencoded — это component-encoding плюс одна замена: пробелы превращаются в знак плюс, как требует формат, в котором HTML-формы отправляют данные методом POST.
Знак плюс двусмысленен
В теле form-urlencoded знак + означает пробел. В сегменте пути + — это буквальный плюс. По самой строке декодер не может понять, что имелось в виду, поэтому это настройка, а не догадка: выберите form-urlencoded или включите «плюс как пробел» — и плюсы станут пробелами; оставьте выключенным — и они останутся плюсами. При кодировании есть связанная ловушка в обратную сторону: буквальный + на входе должен превратиться в %2B до того, как пробелы заменятся на плюс, иначе после прохода через кодировщик и декодировщик он незаметно превратится в пробел. Этот порядок здесь зафиксирован, поэтому «закодировать, потом декодировать» всегда возвращает ровно исходную строку.
Поломанные escape-последовательности, с точным описанием
Одинокий %, за которым не следуют две шестнадцатеричные цифры, или обрезанная многобайтовая последовательность вроде %E0%A4 делают строку недекодируемой — а встроенный декодер браузера выбрасывает исключение, не сообщая, где именно. Строгий режим показывает строку и позицию первой ошибки, чтобы вы могли найти ее в длинном списке. Щадящий режим трактует одиночный % как буквальный знак процента и возвращает остальное. Обычно это и нужно, если на входе строка журнала, а не URL. Построчная обработка важна по той же причине: одна битая запись в списке из пятидесяти сразу показывает, какая именно строка сломана.
Текст остается в этой вкладке
Преобразование использует встроенные функции кодирования браузера и полностью выполняется локально. В строках запроса часто передаются токены и идентификаторы, поэтому стоит сказать прямо: ничего не загружается, не логируется и не сохраняется.
Частые вопросы
Чем encodeURI отличается от encodeURIComponent?
encodeURIComponent дополнительно экранирует структурные символы : / ? # & =. Это правильно для одного значения внутри строки запроса. encodeURI оставляет их как есть, и подходит, когда на вход подается полный адрес, который нужно только сделать безопасным.
Почему + иногда означает пробел?
Потому что формат form-urlencoded, который используют HTML-формы при отправке, так его определяет. В остальных частях URL + — это буквальный плюс. Так как по строке нельзя понять, какой случай перед нами, при декодировании это выносится в явную настройку.
Что делать при ошибке invalid percent-encoding?
Сообщение указывает строку и позицию первой битой escape-последовательности — обычно это одинокий %, который должен был быть %25, или обрезанная многобайтовая последовательность. Исправьте ее или включите щадящее декодирование, чтобы получить остальной текст.
Работает ли инструмент со списком URL?
Да, и это режим по умолчанию. Каждая строка обрабатывается независимо, пустые строки остаются пустыми, а символы перевода строки никогда не экранируются, так что на входе список и на выходе тоже список.
Сохраняются ли переводы строк?
В построчном режиме — да, включая завершающий перевод строки. Отключите построчный режим, и весь ввод будет считаться одним значением, а его переводы строк превратятся в %0A внутри результата.
Как декодировать кириллицу в адресе?
Вставьте адрес и декодируйте со схемой component. Проценты с UTF-8 вроде %D0%BF%D1%80%D0%B8 превратятся обратно в исходные буквы. Кодирование и обратное декодирование проходят без потерь.
Отправляется ли мой текст куда-нибудь?
Нет. Кодирование и декодирование используют функции, встроенные в браузер, выполняются локально в этой вкладке и не задействуют ни сервер, ни хранилище.