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

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

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

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

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

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

Возможности

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

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

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