Кодування
Unicode Escape
Кодування та декодування Unicode-послідовностей — символи у вигляді \uXXXX і назад.
Unicode escape-послідовність (\uXXXX) записує символ через його код замість самого символу — так рядковий літерал у коді може містити будь-який символ Unicode, використовуючи лише ASCII-сумісні символи в самому файлі.
Як користуватися
- Кодування: вставте текст — кожен не-ASCII символ замінюється на відповідну послідовність \uXXXX.
- Декодування: вставте рядок із \uXXXX-послідовностями, щоб отримати звичайний читабельний текст.
- Символи поза базовою багатомовною площиною (більшість емодзі) кодуються сурогатною парою з двох послідовностей.
Типові сценарії
- Читання JSON- чи JS-коду, де не-ASCII текст був заздалегідь заекранований у \uXXXX для сумісності.
- Вставка символів, яких немає на клавіатурі, у код через явний Unicode escape.
- Діагностика, чому рядок із емодзі виглядає як два незрозумілих символи, — розпізнавання сурогатної пари.
Що варто памʼятати
\uXXXX кодує рівно одну 16-бітну одиницю UTF-16, а не один видимий символ — для символів поза базовою багатомовною площиною (як більшість емодзі) потрібні дві такі послідовності одразу (сурогатна пара).
JSON вимагає escape лише для контрольних символів і деяких спецсимволів — вихід усіх символів у \uXXXX не обов’язковий, хоча й валідний.
Стаття про цей інструмент: Unicode Escape: що означають послідовності \uXXXX
Часті запитання
Що таке послідовність \uXXXX?
Це запис символу через його код у Unicode у шістнадцятковій формі — рівно 4 цифри після \u. Такий формат використовують у JavaScript-рядках, JSON та багатьох мовах програмування для представлення символів, які незручно чи неможливо вставити напряму.
Чому емодзі кодуються двома \uXXXX-послідовностями?
Формат \uXXXX вміщує лише 4 шістнадцяткові цифри, тобто символи з базової багатомовної площини (BMP). Символи поза нею — багато емодзі, рідкісні ієрогліфи — представляють через сурогатну пару: дві послідовності \uXXXX, які разом кодують один символ.
Чим "Не-ASCII" відрізняється від "Усіх символів" у режимі Encode?
Режим "Не-ASCII" залишає латиницю, цифри й базову пунктуацію без змін і екранує лише символи поза ASCII. Режим "Усі символи" перетворює на \uXXXX геть усі символи, включно з латинськими літерами.
Що станеться, якщо сурогатну пару розділити навпіл?
Вийде некоректний символ-«сирота» — самотній код без парного. Більшість парсерів або відхилять такий рядок з помилкою, або відобразять символ-заглушку «�».
Чи можна закодувати символ емодзі одним \uXXXX?
Ні, якщо емодзі лежить поза базовою багатомовною площиною (а більшість сучасних емодзі саме такі) — для нього завжди потрібна сурогатна пара з двох \uXXXX-послідовностей.