Кодирование
URL Encode/Decode
Кодирование и декодирование URL — символы, которые нужно экранировать в ссылках и параметрах запроса.
URL encoding (percent-encoding) replaces characters that aren't allowed in a URL — spaces, non-Latin letters, special characters — with %XX sequences, where XX is the hex code of the byte. This keeps links and query parameters from getting mangled in transit.
How to use it
- Encode: paste text or a URL and any character outside the safe ASCII set is replaced with a %XX sequence.
- Decode: paste an encoded string to see the original text.
- Encoding a full URL and encoding a single query parameter use slightly different safe-character sets — pick the mode that matches what you're encoding.
Common uses
- Building query parameters from text containing spaces, ampersands, or non-Latin characters.
- Debugging why a link with a parameter breaks — often the cause is an unencoded special character.
- Decoding URLs from third-party systems to read them in their original form.
Things to keep in mind
Encode parameter values, not the whole URL at once — otherwise you'll also encode the separators you need (:, /, ?, &).
JavaScript's encodeURIComponent and encodeURI encode different character sets — the former is meant specifically for parameter values.
Статья об этом инструменте: URL Encode/Decode: percent-encoding в ссылках
Часто задаваемые вопросы
В чём разница между Component и URI при кодировании?
Component (encodeURIComponent) экранирует почти все спецсимволы, включая &, = и ?, поэтому подходит для значений параметров запроса. URI (encodeURI) не трогает символы, которые нужны для структуры самого адреса, такие как /, ? и &, и применяется для кодирования целой ссылки.
Чем URL-кодирование отличается от Base64?
Это разные вещи: URL-кодирование (percent-encoding) заменяет отдельные небезопасные символы на вид %XX, сохраняя остальной текст читаемым, а Base64 полностью перекодирует данные в новый алфавит. Иногда встречается «URL-safe Base64» — это Base64 с заменой символов +/ на -_, а не URL-кодирование.
Текст куда-то передаётся при кодировании или декодировании?
Нет, всё происходит локально в браузере — введённые данные никуда не отправляются.
Что такое двойное кодирование и как его распознать?
Это ошибка, когда уже закодированную строку кодируют ещё раз — символ % сам превращается в %25, и %20 становится %2520. Признак проблемы — последовательности вида %25XX в декодированном результате.
Почему пробел иногда кодируется как +, а иногда как %20?
+ для пробела — это формат application/x-www-form-urlencoded, который используют формы и query-строки. %20 — стандартный percent-encoding из RFC 3986, корректный в любой части URL.