Кодирование

Unicode Escape

Кодирование и декодирование Unicode-последовательностей — символы в виде \uXXXX и обратно.

Unicode escape-последовательность (\uXXXX) записывает символ через его код вместо самого символа — так строковый литерал в коде может содержать любой символ Unicode, используя лишь ASCII-совместимые символы в самом файле.

Как пользоваться

Типичные сценарии

Что стоит помнить

\uXXXX кодирует ровно одну 16-битную единицу UTF-16, а не один видимый символ — для символов за пределами базовой многоязычной плоскости (как большинство эмодзи) нужны две такие последовательности сразу (суррогатная пара).

JSON требует экранирования только для управляющих символов и некоторых спецсимволов — вывод всех символов в \uXXXX не обязателен, хотя и валиден.

Статья об этом инструменте: Unicode Escape: что означают последовательности \uXXXX

Часто задаваемые вопросы

Что означает форма \uXXXX?

Это escape-последовательность, где XXXX — шестнадцатеричный код символа в Unicode (например, \u00e9 — это «é»). Такой формат используется в JS-строках, JSON и других языках для представления символов, которые сложно или небезопасно вставлять напрямую.

Почему для эмодзи получается два \uXXXX подряд?

Символы за пределами BMP (Basic Multilingual Plane) — многие эмодзи и редкие иероглифы — не помещаются в один 16-битный код \uXXXX и кодируются суррогатной парой из двух последовательностей. Это стандартное поведение UTF-16, а не ошибка.

Данные обрабатываются на сервере?

Нет, кодирование и декодирование выполняются полностью в браузере, без отправки текста куда-либо.

Что произойдёт, если суррогатную пару разделить пополам?

Получится некорректный символ-«сирота» — одинокий код без парного. Большинство парсеров либо отклонят такую строку с ошибкой, либо отобразят символ-заглушку «�».

Можно ли закодировать символ эмодзи одним \uXXXX?

Нет, если эмодзи лежит за пределами базовой многоязычной плоскости (а большинство современных эмодзи именно такие) — для него всегда нужна суррогатная пара из двух \uXXXX-последовательностей.

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

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

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

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

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

URL Encode/Decode: percent-encoding в ссылках

Как спецсимволы в адресной строке и query-параметрах превращаются в %XX-последовательности.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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