Сборка значений query-string
Любой пользовательский ввод, который попадает в ?q=..., должен кодироваться в режиме Component. Режим URI оставит = и & необработанными и сломает URL, если значение их содержит.
Закодируйте любой текст в безопасную для URL строку с percent-encoding или декодируйте закодированный URL обратно. Живой просмотр, поддержка UTF-8, всё работает прямо в браузере.
Component (encodeURIComponent) экранирует всё, что не относится к незарезервированным символам — самый безопасный вариант для значений query-string, сегментов пути или любого отдельного поля. URI (encodeURI) сохраняет структурные символы URL (:/?#=&) — используйте его для целого URL. Form (application/x-www-form-urlencoded) — это Component, в котором пробелы заменяются на «+»; именно так кодируют HTML-формы.
RFC 3986 определяет набор «незарезервированных» символов, которые не нужно кодировать: A-Z a-z 0-9 - _. ~. Всё остальное подвергается percent-encoding. encodeURIComponent дополнительно кодирует :/?#&=, которые encodeURI оставляет нетронутыми. Это различие важно, когда вы кодируете значение параметра, а не целый URL.
Перетащите текстовый файл сюда или нажмите для выбора
Любой UTF-8 текстовый файл:.txt,.csv,.json,.url,.log
Быстро, точно, только в браузере — для разработчиков, копирайтеров и всех, кто отлаживает URL.
Выбирайте режим Component, Full URI или Form в зависимости от того, что кодируете — значение query-string, целый URL или содержимое HTML-формы.
Любое кодирование и декодирование выполняется в вашем браузере встроенным JavaScript. Текст и URL не покидают устройство.
Результат обновляется на каждое нажатие — никаких кнопок «Кодировать», никаких обращений к серверу.
Эмодзи, иероглифы CJK, латиница с диакритикой и кириллица корректно проходят через encodeURIComponent и обратно.
При декодировании можно считать «+» пробелом — соглашение, которое HTML-формы используют в application/x-www-form-urlencoded.
Перетащите файл.txt,.csv или.json, чтобы закодировать или декодировать его за один шаг. Результат скачивается как.txt.
Три встроенных API браузера, три режима — и всё это работает прямо на странице, которую вы читаете.
На каждое нажатие клавиши строка передаётся небольшой JavaScript-функции. Никаких debounce, никаких вызовов API, никаких fetch — функция выполняется синхронно во вкладке вашего браузера.
Component вызывает encodeURIComponent — экранирует всё, что не входит в A-Z a-z 0-9 - _. ~. URI вызывает encodeURI — сохраняет :/?#=&, чтобы целый URL остался валидным. Form использует encodeURIComponent и заменяет пробел на + согласно application/x-www-form-urlencoded.
Обе функции encodeURIComponent и encodeURI внутри преобразуют строку в байты UTF-8 перед percent-encoding каждого небезопасного байта. Поэтому китайский иероглиф 中 превращается в %E4%B8%AD — ровно то, что требует RFC 3986.
Результат подставляется в поле вывода, доступное только для чтения. Нажмите «Копировать», чтобы поместить его в буфер обмена через navigator.clipboard.writeText, или «Скачать», чтобы сохранить как .txt через Blob URL — всё остаётся в вашем браузере.
Реальные ситуации, в которых правильный режим кодирования предотвращает баги.
Любой пользовательский ввод, который попадает в ?q=..., должен кодироваться в режиме Component. Режим URI оставит = и & необработанными и сломает URL, если значение их содержит.
Некоторые мессенджеры и PDF портят ссылки, когда в них есть пробелы или не-ASCII символы. Прогоните URL через режим URI, чтобы он безопасно копировался и вставлялся где угодно.
Когда ваш API отклоняет запрос, вставьте URL в режим Decode, чтобы увидеть, что на самом деле получил сервер. Двойное кодирование (когда сам % закодирован как %25) сразу бросается в глаза.
При отладке POST-тел в формате application/x-www-form-urlencoded декодируйте с включённой опцией «+ как пробел». Именно это соглашение используют браузеры, и забыть про него — главная причина багов вида «почему в имени пользователя плюсы вместо пробелов».
Кодируемые URL часто содержат реальные email клиентов, идентификаторы или токены сессий — именно те данные, которые не стоит вставлять в чужой серверный сервис. iKit URL Encoder работает как JavaScript, уже загруженный в ваш браузер, поэтому ввод не покидает вкладку.
fetch, XHR или beacon во время кодирования и декодирования.
Подробные туториалы и сравнения инструментов из блога iKit.
The 30-year-old form-encoding quirk explained — when + means space, when it means literal +, and how to fix the email-with-plus bug.
When to reach for Base64 versus URL percent-encoding, and what each encoding actually solves.
Pretty-print, validate, and structurally diff messy JSON in any browser.
Component (encodeURIComponent) экранирует всё, что не относится к незарезервированным символам — самый безопасный вариант для значений query-string, сегментов пути или любого отдельного поля. URI (encodeURI) сохраняет структурные символы URL (:/?#=&) — используйте его для целого URL. Form (application/x-www-form-urlencoded) — это Component, в котором пробелы заменяются на «+»; именно так кодируют HTML-формы.
RFC 3986 определяет набор «незарезервированных» символов, которые не нужно кодировать: A-Z a-z 0-9 - _. ~. Всё остальное подвергается percent-encoding. encodeURIComponent дополнительно кодирует :/?#&=, которые encodeURI оставляет нетронутыми. Это различие важно, когда вы кодируете значение параметра, а не целый URL.
Три типичные причины: (1) исходник был закодирован как Form, поэтому «+» нужно считать пробелом — включите соответствующую опцию. (2) Двойное кодирование — ввод закодировали дважды; декодируйте ещё раз. (3) Некорректная percent-последовательность — одиночный % без двух шестнадцатеричных цифр следом. Точную позицию байта смотрите в сообщении об ошибке.
Да, в режиме Component — мы вызываем encodeURIComponent напрямую. Режим Form добавляет стандартные правки form-encoding (! ' * становятся %21 %27 %28 %29 %2A) согласно RFC 3986 и WHATWG. Режим URI вызывает encodeURI — это то, что в большинстве языков называют «percent-encoding для URL».
Нет. Весь инструмент — это JavaScript внутри страницы, кодирование и декодирование происходят в вашем браузере. Можно убедиться: откройте DevTools → Network и наблюдайте — никаких запросов при операциях кодирования и декодирования не отправляется.