Вебсправочник
Справочник JavaScript

String.normalize(): одинаковый текст и разные Unicode-записи

Метод normalize приводит строку к одной из форм нормализации Unicode для согласования определённых эквивалентных последовательностей.

Назначение

Метод normalize приводит строку к одной из форм нормализации Unicode для согласования определённых эквивалентных последовательностей.

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

Один видимый знак может быть записан одним символом или базовым символом с комбинирующим знаком. NFC обычно соединяет канонически эквивалентные последовательности там, где это предусмотрено.

Пример

const composed="é";
const decomposed="é";
console.assert(composed!==decomposed);
console.assert(composed.normalize("NFC")===decomposed.normalize("NFC"));

Что должно получиться

Исходные строки различаются, но после канонической нормализации совпадают. Это согласование представления, а не перевод, транслитерация или удаление всех различий текста.

Граница применения и частая ошибка

Нормализация не делает все похожие символы одинаковыми и не защищает автоматически от подмены имён. Правила допустимых идентификаторов, регистра и похожих алфавитов нужно задавать отдельно.

Самостоятельная проверка

Сравните составную и разложенную запись буквы с ударением до и после NFC. Затем исследуйте визуально похожие латинскую и кириллическую буквы: это другой случай.

JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.