Кодирование
Unicode Escape
Кодирование и декодирование Unicode-последовательностей — символы в виде \uXXXX и обратно.
Unicode escape-последовательность (\uXXXX) записывает символ через его код вместо самого символа — так строковый литерал в коде может содержать любой символ Unicode, используя лишь ASCII-совместимые символы в самом файле.
Как пользоваться
- Кодирование: вставьте текст — каждый не-ASCII символ заменяется на соответствующую последовательность \uXXXX.
- Декодирование: вставьте строку с \uXXXX-последовательностями, чтобы получить обычный читаемый текст.
- Символы за пределами базовой многоязычной плоскости (большинство эмодзи) кодируются суррогатной парой из двух последовательностей.
Типичные сценарии
- Чтение JSON- или JS-кода, где не-ASCII текст был заранее экранирован в \uXXXX для совместимости.
- Вставка символов, которых нет на клавиатуре, в код через явный Unicode escape.
- Диагностика, почему строка с эмодзи выглядит как два непонятных символа, — распознавание суррогатной пары.
Что стоит помнить
\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-последовательностей.