Конвертер текста в Юникод

Преобразуйте текст в кодовые точки Юникода, HTML-сущности или эскейп-последовательности JavaScript и декодируйте обратно. Полная поддержка дополнительной плоскости и эмодзи.

Преобразуйте текст в кодовые точки Юникода и обратно. Выберите HTML-сущности, эскейпы JavaScript или нотацию U+. Обе панели доступны для редактирования, а символы вне основной многоязычной плоскости — включая любые эмодзи — обрабатываются как единые кодовые точки, а не суррогатные пары.

Кодовые точки, кодировки и суррогатные пары

Кодовая точка — это не байт

Юникод присваивает каждому символу число, называемое кодовой точкой, в виде U+ и шестнадцатеричных цифр. A — это U+0041, — U+8702, а эмодзи медоносной пчелы — U+1F41D. Это число — идентичность символа. То, как он хранится — UTF-8, UTF-16, UTF-32, — решается отдельно, поэтому этот инструмент отличается от конвертера текста в двоичный.

Ловушка суррогатной пары

Строки JavaScript — в UTF-16. Кодовые точки выше U+FFFF хранятся как две 16-битные половины, называемые суррогатной парой. Наивный код, перебирающий через charCodeAt, видит эмодзи как два бессмысленных значения около 0xD800-0xDFFF и сообщает, что "🐝".length равно 2. Этот конвертер перебирает по кодовым точкам, поэтому эмодзи пчелы даёт одно значение U+1F41D, а не две сломанные половины.

Четыре формата вывода

  • HTML десятичная сущностьA. Работает в любом HTML-документе и в XML.
  • HTML hex-сущностьA. То же самое в шестнадцатеричном виде, что совпадает с таблицами Юникода.
  • JavaScript эскейп\u0041. Для строковых литералов в исходном коде. Выше U+FFFF требуется фигурная форма \u{1F41D}, и инструмент выводит её автоматически.
  • Нотация кодовой точкиU+0041. Форма, используемая в спецификациях и документации.

Практическое применение

Экранирование не-ASCII текста сущностями позволяет ему переживать системы, портящие кодировки, например старые почтовые шлюзы или неправильно настроенные базы данных. Просмотр кодовых точек — также самый быстрый способ диагностировать невидимые символы: неразрывный пробел нулевой ширины (U+200B) или неразрывный пробел (U+00A0) выглядят на экране как обычный пробел, но ломают сравнение строк. Вставьте подозрительный текст сюда, и разница сразу видна.

Примечание об открытом коде: реализовано через нативные JavaScript String.prototype.codePointAt и String.fromCodePoint. Сторонние библиотеки не используются.

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

Почему одно эмодзи даёт единственную U+1F41D вместо двух значений?
Инструмент перебирает по кодовым точкам, а не по 16-битным элементам UTF-16. Эмодзи живут выше U+FFFF, поэтому наивные переборы символов разбивают их на суррогатные пары; этот — нет.
В чём разница между этим и инструментом текст-в-двоичный?
Этот инструмент показывает кодовые точки — абстрактную идентичность каждого символа. Двоичный инструмент показывает байты UTF-8, использованные для их хранения. Один символ может быть одной кодовой точкой, но тремя байтами.
Могу ли я декодировать смесь форматов?
Да. Декодер распознаёт &#..;, &#x..;, \uXXXX, \u{...} и U+.... в одном вводе, а любой текст между эскейпами сохраняется как есть.
Как найти невидимые символы в строке?
Вставьте её и переключитесь в нотацию U+. Пробелы нулевой ширины показываются как U+200B, неразрывные пробелы — как U+00A0, а метки порядка байтов — как U+FEFF — все невидимы на экране, но очевидны здесь.
Безопасно ли вставлять HTML-сущности прямо в страницу?
Да, числовые ссылки на символы допустимы в HTML и XML. Учтите, что они экранируют только сами символы; они не заменяют правильное HTML-экранирование <, > и & в недоверенном содержимом.
Что-нибудь покидает мой браузер?
Нет. Преобразование — чистая работа со строками, выполняемая локально.