Кодирование

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

Common uses

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.

Статьи: Кодирование

Base64: зачем нужно кодирование и как оно работает

Как Base64 превращает бинарные данные в текст ASCII и где это реально нужно.

Base32: чем отличается от Base64 и когда удобнее

Регистронезависимый алфавит Base32 и сценарии, где он удобнее Base64.

HTML Entities: как безопасно выводить спецсимволы на странице

Почему символы < > & нужно экранировать и как это предотвращает поломку разметки.

JWT: структура токена и что значит «декодировать» JWT

Header, payload и signature JWT-токена и почему декодирование — не то же самое, что проверка подписи.

Unicode Escape: что означают последовательности \uXXXX

Откуда в JSON и JS-строках берутся последовательности вида \u0041 и что они означают.

ROT13 и шифр Цезаря: простая замена символов

Почему сдвиг на 13 букв делает ROT13 симметричным и зачем его вообще используют сегодня.

Punycode: как домены с кириллицей работают в DNS

Как домен вроде «пример.рф» превращается в ASCII-запись с префиксом xn--.

Азбука Морзе: как текст превращается в точки и тире

Принцип кодирования букв точками и тире и где азбука Морзе применяется сейчас.

Data URI: когда встраивать изображения прямо в код

Как data:-URI встраивает содержимое файла прямо в HTML или CSS и когда это оправдано.

Gzip + Base64: сжатие данных для передачи текстом

Зачем сжатые бинарные данные ещё и кодируют в Base64 перед тем, как поместить в текстовое поле.

XML Entities: экранирование символов в XML-документах

Пять обязательных XML-entity, без которых документ ломается при парсинге.