ToolActToolAct

Конвертер Unicode

Взаимное преобразование текста и Unicode кодировки с поддержкой различных форматов вывода

Ввод
Символов: 0
Кодовых точек: 0
Результат
Символов: 0

Детали кодовых точек символов (нажмите для копирования)

Введите текст для отображения кодовых точек каждого символа

Что такое Unicode?

Unicode (Уникод) — это отраслевой стандарт в информатике, который упорядочивает и кодирует большинство письменных систем мира. Каждый символ Unicode имеет уникальный номер — кодовую точку (Code Point), обычно записываемую в шестнадцатеричном формате с префиксом U+, например U+4E2D для китайского иероглифа «中». Инструмент конвертации Unicode позволяет преобразовывать текст в различные форматы представления Unicode и восстанавливать текст из Unicode-кодов. Unicode описывает символы через code points, а кодировки вроде UTF-8 определяют, как эти code points хранятся в байтах. Это важно при анализе текста с emoji, accents, CJK-символами, symbols, управляющими символами и смешанными письменностями. Один видимый символ может состоять из нескольких code points, особенно с combining marks, variation selectors и emoji sequences. Инструмент помогает отлаживать mojibake, normalization, escape sequences, невидимые символы и расхождения между количеством символов и byte length.

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

Шаги

  1. Введите или вставьте текст для конвертации в поле ввода
  2. Выберите направление конвертации: Текст в Unicode или Unicode в Текст
  3. Выберите формат вывода: \uXXXX или U+XXXX (доступно при кодировании)
  4. Результаты появляются автоматически; доступно копирование или обмен ввода/вывода одним нажатием

Примечания по кодированию

  • Форматы Unicode-экранирования удобны для кода и отладки, но снижают читаемость обычного текста.
  • При декодировании следите за суррогатными парами и выводом эмодзи: разрыв пары даёт нечитаемые символы.

Применение

Кодирование текста в форматы Unicode-экранированияПреобразуйте текст в последовательности \uXXXX в стиле JavaScript или нотацию U+XXXX. Символы выше U+FFFF представляются суррогатными парами в режиме экранирования, а сетка деталей по-прежнему показывает полную кодовую точку. Конвертация выполняется локально через String.prototype.codePointAt и fromCodePoint, поэтому данные символов остаются на месте, пока вы сами не скопируете экранированный вывод.
Декодирование Unicode-экранирования в читаемый текстДекодируйте паттерны \uXXXX, \u{...} и U+XXXX в символы, затем скопируйте восстановленный текст. Это помогает при проверке логов, JSON-строк, файлов локализации и экранированных фрагментов из кода или API. Декодирование происходит через fromCharCode и fromCodePoint внутри страницы, поэтому исходная строка и восстановленные символы не покидают вкладку браузера — удобно, когда фрагмент содержит внутренний контент или нерелизные названия продуктов.
Инспекция отдельных кодовых точекКаждый символ ввода отображается с видимым символом и значением U+, нажатие на плитку копирует кодовую точку. Количество символов и кодовых точек показано отдельно — это важно для эмодзи и других многосоставных символов. Поскольку сетка строится на основе итерации по вводимой строке в памяти, вся карта кодовых точек формируется локально без отправки текста во внешний Unicode-сервис.
Обнаружение мусора и дважды закодированных строкВставьте строки вроде 'é' или '中文', декодируйте их, затем повторно закодируйте с предполагаемой исходной кодировкой (UTF-8 vs Latin-1), чтобы определить, был ли источник дважды закодирован, а не искажён при захвате. Проверка полностью браузерная: TextDecoder, итерация по кодовым точкам и повторное кодирование происходят на странице, поэтому строки из продакшн-логов можно анализировать без загрузки на сервер.
Подсчёт эмодзи и комбинирующих знаков как кодовых точекИспользуйте сетку кодовых точек для выявления семейных эмодзи, последовательностей флагов и комбинирующих диакритических знаков, занимающих несколько слотов. Раздельные счётчики символов и кодовых точек проясняют, почему строка «1 символ» может занимать 7 UTF-16 единиц. Поскольку подсчёт — это локальная итерация по вводу, даже строки с конфиденциальным содержимым можно измерить для столбцов базы данных или бюджета формата передачи, не покидая браузер.

Технический принцип

Стандарт Unicode (ISO/IEC 10646) назначает уникальный числовой код каждому символу на 17 плоскостях (от U+0000 до U+10FFFF). Основная многоязычная плоскость (BMP, плоскость 0) охватывает диапазон U+0000–U+FFFF и содержит практически все современные системы письма, включая единые идеограммы CJK. Дополнительные плоскости (1–16) включают исторические письменности, редкие иероглифы CJK, эмодзи и специальные символы. Инструмент выполняет преобразование между читаемым текстом и двумя машинно-ориентированными представлениями: escape-последовательностями \uXXXX в стиле JavaScript и стандартной нотацией U+XXXX. UTF-16 — внутренняя кодировка строк JavaScript: каждый символ BMP хранится как один 16-битный элемент кода, равный его кодовой точке, а дополнительные символы (U+10000 и выше) кодируются суррогатными парами: из кодовой точки вычитается 0x10000, оставляя 20-битное значение, которое затем разделяется на 10-битный старший суррогат (0xD800 + ((cp - 0x10000) >> 10)) и 10-битный младший суррогат (0xDC00 + ((cp - 0x10000) & 0x3FF)). Режим кодирования инструмента определяет дополнительные кодовые точки с помощью String.prototype.codePointAt() и генерирует корректную двухсимвольную escape-последовательность для формата \uXXXX. Для формата U+XXXX полная кодовая точка выводится напрямую. Режим декодирования анализирует три синтаксиса: \uXXXX (четыре шестнадцатеричных цифры, только BMP), \u{XXXXX} (фигурные скобки ES6, поддерживающие полный диапазон Unicode) и U+XXXX (стандартная нотация с переменной длиной шестнадцатеричного числа). Регулярное выражение /\\u\{([0-9a-fA-F]+)\}/g обрабатывает escape-последовательности в фигурных скобках и передаёт их в String.fromCodePoint(), а /\\u([0-9a-fA-F]{4})/g обрабатывает традиционные escape-последовательности через String.fromCharCode(). Корректное сочетание обоих паттернов восстанавливает суррогатные пары, когда дополнительный символ был закодирован двумя escape-последовательностями \u. Кодировка UTF-8 важна, поскольку определяет длину в байтах: символ BMP, например «中» (U+4E2D), кодируется как 3 байта UTF-8 (E4 B8 AD), а эмодзи «😀» (U+1F600) требует 4 байта (F0 9F 98 80). Счётчик символов инструмента различает количество кодовых точек и количество 16-битных элементов кода UTF-16 — это полезно при отладке ограничений длины в базах данных, API или полях форм, которые подсчитывают элементы кода, а не символы.

  • Итерация по кодовым точкам: String.prototype.codePointAt(pos) корректно возвращает полную кодовую точку для дополнительных символов, в отличие от charCodeAt(), который возвращает только старший суррогат — инструмент использует оператор расширения [...str] для итерации по кодовым точкам, который внутренне вызывает протокол итератора строк.
  • Математика суррогатных пар: для дополнительной кодовой точки CP > 0xFFFF старший суррогат вычисляется как Math.floor((CP - 0x10000) / 0x400) + 0xD800, а младший — как ((CP - 0x10000) % 0x400) + 0xDC00; режим кодирования применяет эту формулу для генерации корректных пар \uD800\uDC00.
  • Конвейер декодирования с регулярными выражениями: три паттерна выполняются последовательно — \u{XXXXX} (фигурные скобки ES6) → \uXXXX (четырёхзначный hex) → U+XXXX (стандартная нотация) — при этом fromCodePoint() обрабатывает пути с фигурными скобками и U+, а fromCharCode() — традиционный четырёхзначный путь.
  • Байтовая структура UTF-8: символы BMP используют 1–3 байта UTF-8 (ASCII = 1 байт, латинский дополнительный набор = 2 байта, CJK = 3 байта); дополнительные символы используют 4 байта по схеме 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx — счётчик байтов инструмента использует new Blob([str]).size для точного измерения.
  • Кодовые точки и элементы кода: один видимый символ может занимать несколько кодовых точек (например, «é» может быть U+00E9 или U+0065 + U+0301 с объединяющим акутом) — инструмент выводит как charCount (элементы кода UTF-16), так и codepointCount (скалярные значения Unicode), чтобы выявить это расхождение.
  • Обзор плоскостей Unicode: плоскость 0 (BMP) = современные системы письма, плоскость 1 (SMP) = исторические символы + эмодзи + математические символы, плоскость 2 (SIP) = редкие CJK, плоскость 14 (SSP) = теги + селекторы вариаций, плоскости 15–16 = частное использование — режим кодирования корректно обрабатывает все плоскости через codePointAt().
  • Нотация \u и U+: \uXXXX — escape-последовательность JavaScript/Java/C (только без фигурных скобок для BMP); U+XXXX — каноническая нотация Unicode Consortium (минимум 4 шестнадцатеричных цифры, без верхнего предела) — переключатель формата инструмента переключает между этими представлениями.

Примеры

Китайский в Unicode-escape

Вход:  你好世界 (4 символа CJK, 12 байт UTF-8)
Выход: \u4f60\u597d\u4e16\u754c
Примечание:   только кодовые точки BMP; полезно в JSON-строках, литералах JavaScript и лог-файлах

Эмодзи в escape-последовательность суррогатной пары

Вход:  😀🎉 (2 эмодзи, каждый выше U+FFFF)
Выход: \uD83D\uDE00\uD83C\uDF89
Примечание:   символы вне BMP кодируются как суррогатная пара UTF-16; старым движкам JS нужен String.fromCodePoint для корректного round-trip

Декодирование Unicode-escape

Вход:  \u4e2d\u6587\u6d4b\u8bd5
Выход: 中文测试
Примечание:   вставьте экранированную строку, и инструмент выполнит обратное преобразование; при отладке проблем с CJK сверяйте байты выхода с источником

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

Что инструмент показывает по каждому символу?

Кодовую точку (в десятичном и шестнадцатеричном виде), название блока (например, Basic Latin, CJK Unified Ideographs), категорию (Letter, Number, Symbol, Punctuation и т. д.), Unicode-имя, а также представления в UTF-8 / UTF-16 / UTF-32. Полезно при отладке проблем с кодировкой и при выборе нужного символа.

В чём разница между UTF-8, UTF-16 и UTF-32?

Все три кодируют одни и те же символы Unicode. UTF-8 использует 1–4 байта на кодовую точку и совместим с ASCII по байтам (доминирующая веб-кодировка). UTF-16 использует 2 или 4 байта (применяется внутри JavaScript и Windows). UTF-32 всегда использует 4 байта (редко встречается в передаче, часто — в памяти).

Почему «𝓗» отображается как два UTF-16 кода?

Кодовые точки выше U+FFFF (Basic Multilingual Plane) кодируются в UTF-16 «суррогатной парой» — двумя 16-битными половинами. string.length в JavaScript считает их как 2; Array.from(str) — как одну. Страница показывает оба представления, чтобы можно было разобраться с неожиданностями подсчёта длины.

Что такое формы нормализации (NFC/NFD/NFKC/NFKD)?

Unicode допускает несколько представлений одного и того же видимого текста: é может быть одной кодовой точкой (U+00E9) или e + combining acute accent (U+0065 U+0301). NFC их объединяет; NFD — разлагает. NFKC/NFKD дополнительно сворачивают совместимые символы (½ → 1/2). Всегда нормализуйте перед сравнением строк или хешированием.

Почему эмодзи иногда выглядят как квадратики?

В шрифте вашего браузера нет такого глифа. Современные эмодзи используют последовательности ZWJ (например, 👨‍👩‍👧 = man + ZWJ + woman + ZWJ + girl), для рендеринга в одно изображение нужны определённые шрифты; старые шрифты показывают три отдельные эмодзи или квадратики.

Как найти символ по имени?

Введите имя (или его часть) в поле поиска. Имена соответствуют официальному списку Unicode (LATIN SMALL LETTER A, GREEK CAPITAL LETTER OMEGA, MUSICAL SYMBOL G CLEF). У популярных эмодзи есть также «CLDR short name», который страница распознаёт.

Загружается ли мой ввод?

Нет. Поиск использует встроенную в браузер базу Unicode. Ничего не отправляется.

Связанные инструменты

Кодировщик/Декодировщик Base64

Онлайн-инструмент для кодирования и декодирования Base64 с поддержкой UTF-8 текста, кириллицы и изображений. Мгновенное кодирование без установки программ.

Кодировщик/Декодировщик URL

Бесплатный онлайн-кодировщик и декодировщик URL для параметров, текста Unicode и спецсимволов. Исправляйте проблемы с кодировкой ссылок прямо в браузере.

Кодировщик HTML-сущностей

Бесплатный онлайн-кодировщик HTML-сущностей: преобразует спецсимволы в сущности и обратно. Защищает от XSS-атак и обеспечивает безопасный вывод HTML.

Конвертер регистра

Бесплатный онлайн-конвертер регистра: camelCase, snake_case, kebab-case, CONSTANT и другие форматы. Незаменим для разработчиков при переименовании переменных.

Инструмент преобразования китайского

Бесплатный онлайн-конвертер китайского письма между упрощённым и традиционным. Учитывает различия в лексике материкового Китая, Тайваня и Гонконга при переводе.

Запрос таблицы ASCII

Бесплатная онлайн-таблица ASCII: управляющие, печатные и расширенные символы с кодами. Ищите и фильтруйте значения ASCII для быстрого поиска нужного символа.