Что такое нормализация Unicode?

Unicode определяет несколько способов представления одного и того же видимого символа. Например, символ "é" может быть сохранён как единая предкомпозированная кодовая точка (U+00E9) или как буква "e", за которой следует комбинирующий острый акцент (U+0065 U+0301). Оба варианта отображаются идентично, но различаются на уровне байтов, что вызывает проблемы при сравнении строк, поиске и обработке текста.

Нормализация Unicode — это процесс преобразования текста в каноническое представление, при котором эквивалентные строки становятся идентичными. Unicode Standard определяет четыре формы нормализации:

  • NFC (каноническая декомпозиция, за которой следует каноническая композиция): предкомпозированная форма; наиболее компактная, широко используется в веб-приложениях и большинстве операционных систем.
  • NFD (каноническая декомпозиция): полностью разложенная форма; каждый символ разбивается на базовую букву и комбинирующие диакритические знаки.
  • NFKC (декомпозиция совместимости, за которой следует каноническая композиция): как NFC, но также преобразует символы совместимости (например, лигатуры, надстрочные символы, полноширинные варианты) в их канонические эквиваленты.
  • NFKD (декомпозиция совместимости): как NFD, но также применяет декомпозицию совместимости.

Описание инструмента

Этот инструмент нормализует текст Unicode из одной формы нормализации в другую. Выберите исходную и целевую формы, вставьте текст, и преобразованный результат появится мгновенно.

Возможности

  • Все четыре формы нормализации: поддерживает NFC, NFD, NFKC и NFKD как в качестве источника, так и в качестве целевой формы.
  • Двусторонняя конвертация: свободно переключайтесь между любой комбинацией форм.
  • Вывод в реальном времени: текст нормализуется мгновенно при вводе или вставке.
  • Работает с любым скриптом Unicode: поддерживает латиницу, CJK, арабский, кириллицу и любой другой текст в кодировке Unicode.

Как это работает

Инструмент применяет стандартный метод JavaScript String.prototype.normalize() с выбранной целевой формой. Это полностью соответствующая спецификации реализация нормализации Unicode, определённая в Unicode Standard Annex #15.

Варианты использования

  • Исправление сравнения строк: нормализуйте текст перед сравнением или индексированием, чтобы визуально идентичные строки совпадали корректно.
  • Консистентность поиска и базы данных: стандартизируйте пользовательский ввод в одну форму (обычно NFC) перед сохранением в базу данных, чтобы предотвратить дублирование записей, отличающихся только кодировкой.
  • Свёртывание совместимости: используйте NFKC для преобразования лигатур, надстрочных символов и полноширинных символов в их стандартные эквиваленты для индексирования поиска или обработки естественного языка.