Экранирование Unicode

Вставьте текст и сразу получите escape-последовательности — или вставьте \u4F60, чтобы вернуть символы. Без кнопок, ничего не загружается.

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

  1. Выберите «Экранировать» или «Разэкранировать» — поле ввода остаётся как есть, поэтому один и тот же текст можно посмотреть с обеих сторон, не набирая его заново.
  2. Экранирование: наберите или вставьте текст, и последовательности появятся сразу. Выберите синтаксис целевого языка: \uXXXX (Java, JSON, .properties — символы выше BMP становятся суррогатными парами UTF-16), \u{X} (JavaScript ES6, Rust, Swift, Ruby, PHP), \UXXXXXXXX (Python, C, Go, C#) или U+XXXX (стандартная запись Unicode).
  3. Выберите диапазон: «Только не-ASCII» (по умолчанию) экранирует всё выше U+007F и не трогает ASCII, пробелы и переносы строк; «Все символы» экранирует каждую кодовую точку, так что вывод становится чистым ASCII.
  4. Разэкранирование: вставьте текст с последовательностями, чтобы вернуть символы. Строка над результатом сообщает, сколько символов декодировано и, если фрагмент не прочитался, какой именно и где.

Пример

Ввод

Café "naïve" 😀

Экранировано

Caf\u00E9 "na\u00EFve" \uD83D\uDE00

У «é» нет ASCII-формы, поэтому она становится \u00E9. «😀» — это U+1F600, выше BMP, поэтому синтаксис \uXXXX записывает его суррогатной парой \uD83D\uDE00. Переключитесь на \u{X}, и тот же текст даст Caf\u{E9} "na\u{EF}ve" \u{1F600}; \UXXXXXXXX даст …\U0001F600; U+XXXX даст CafU+00E9 "naU+00EF ve" U+1F600 — двойной пробел после é это разделитель плюс пробел, который уже был в тексте. Любой из этих вариантов при вставке обратно в «Разэкранировать» возвращается без изменений.

Правила, ограничения и известные проблемы

  • Распознаются только четыре синтаксиса: \uXXXX (ровно 4 шестнадцатеричные цифры), \u{X} (1–6 цифр), \UXXXXXXXX (ровно 8 цифр) и U+XXXX (1–6 цифр, заглавная U+). %uXXXX, \x{X}, CSS \X и \N{NAME} не поддерживаются; HTML-ссылки вроде 你 относятся к инструменту HTML-сущностей.
  • \uXXXX всегда ровно 4 цифры: \u12 и \u12345 не читаются как \uXXXX — \u12345 декодируется как U+1234, за которым идёт обычная «5». Когда нужны 1–6 цифр, пишите \u{…}.
  • У \uXXXX нет границы символа: \u4F60abc декодируется как 你abc, а U+4F601 — это кодовая точка U+4F601 (5 цифр, допустимо), а не U+4F60 с последующей «1».
  • В U+XXXX один пробел после кодовой точки — разделитель, а не содержимое: U+4F60 hello декодируется как 你hello. Инструмент ставит пробел после каждого токена U+ (кроме самого конца), поэтому его собственный вывод проходит обратное преобразование; токены, написанные вручную без пробелов, приклеиваются к следующим шестнадцатеричным цифрам и считаются нераспознанными.
  • Суррогатные пары встречаются только в синтаксисе \uXXXX, потому что это представление Java/JSON; \u{1F600}, \U0001F600 и U+1F600 записывают кодовую точку напрямую. Старший суррогат без следующего за ним младшего остаётся как написан и считается нераспознанным — он никогда не заменяется на «�».
  • Кодовые точки выше U+10FFFF и сам диапазон суррогатов отклоняются так же: остаются как написаны и учитываются, а не заменяются молча.
  • Диапазон «Только не-ASCII» не экранирует обратную косую черту: если в вашем тексте уже есть \u4f60, «Разэкранировать» прочитает это как последовательность. Эта неоднозначность присуща диапазону — выбирайте «Все символы», когда обратные косые черты важны.
  • Декодирование одноразовое: \u005Cu4F60 становится буквальным текстом \u4F60, а не 你. Вставьте ещё раз, если действительно нужны два уровня.
  • Допустимые управляющие символы декодируются как есть: \u0000 даёт U+0000 (невидимый, но не ошибка), поэтому в выводе могут оказаться символы, которых вы не видите.
  • Строковые escape-последовательности вроде \n и \t остаются обычным текстом и не учитываются, а полные строковые литералы JSON — отдельная задача. URL-, HTML- и Base64-кодирование тоже относятся к отдельным инструментам.
  • До 100 000 символов; выше появляется ошибка вместо обрезанного результата. При вводе длиннее 20 000 символов результат обновляется примерно через 0,6 с после остановки.
  • Без загрузки файлов, истории и ссылок, содержащих ваш ввод: всё работает в браузере, текст не покидает страницу.

Что обычно нужно дальше, когда текст уже экранирован или разэкранирован.