Перейти к содержанию
TextArray

Объяснение нормализации Unicode и удаления акцентов

Blog /

Вы вставляете имя типа «Хосе» в поле поиска, и оно не соответствует другому экземпляру «Хосе» в ваших данных, хотя на экране они выглядят одинаково. Вы экспортируете список в URL-адрес slug и получаете две разные последовательности байтов из того, что должно быть одним и тем же словом. Виновником является нормализация Unicode, и понимание этого важно для обработки текста, сопоставления данных и кодирования символов.

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

Юникод позволяет представлять один и тот же визуальный символ несколькими способами. Буква «é» может существовать как одиночный заранее составленный символ (U + 00E9) или как базовая буква «e» (U + 0065), за которой следует комбинированный острый ударение (U + 0301). Оба отображаются на экране одинаково, но имеют разные последовательности байтов. Нормализация преобразует эти варианты в каноническую форму, поэтому они последовательно сравниваются и сортируются.

NFC против NFD: две распространенные формы

Вы встретите две формы нормализации:

Существуют также NFKC и NFKD (варианты совместимости), которые идут дальше, преобразуя лигатуры и варианты стилей в их базовые эквиваленты, что полезно, когда вы хотите, чтобы «fi» соответствовало «fi».

Почему это важно на практике

Сравнение строк зависит от точного соответствия байтов, если вы сначала не нормализуетесь. При поиске в базе данных слова «кафе» в форме NFC не будет найдено слово «кафе», хранящееся в форме NFD. URL-адреса, содержащие акцентированные символы, могут интерпретироваться разными системами по-разному. Алгоритмы сортировки выдают разные порядки, если некоторые записи являются NFC, а другие — NFD. Любой текстовый конвейер, который объединяет данные из нескольких источников — ответов API, пользовательских загрузок, устаревших баз данных — рискует обнаружить несоответствия.

Нормализация и удаление акцентов для slugs и поиска

Веб-адреса и ключи базы данных обычно не могут содержать символы с диакритическими знаками или комбинированные знаки. Стандартный подход состоит в том, чтобы нормализовать NFC (или иногда NFD, затем удалить объединяющиеся символы), а затем полностью удалить акценты, используя разложение символов. Это преобразует «наивность» в «наивность» для вывода, безопасного для slug. Использовать нормализовать-Юникод чтобы увидеть, как выглядят NFC и NFD, или удалить акценты чтобы раздеть их за один шаг. Для максимальной совместимости удалить не-ascii идет дальше и удаляет все символы за пределами диапазона ASCII, оставляя только a-z, A-Z и основные знаки препинания.

Использование Unicode в вашем рабочем процессе

Прежде чем искать, сравнивать или сортировать текст в приложении:

  1. Нормализуйте все входные данные в NFC (или NFD, если у вас есть конкретная причина).
  2. Храните последовательно в том же виде.
  3. Сравнивайте, ищите и сортируйте после нормализации.

При создании URL-адресов или идентификаторов базы данных сначала нормализуйте, а затем удалите диакритические знаки и символы, отличные от ASCII. Понимание того, что на самом деле представляет собой каждый символ — его кодовая точка, сочетание знаков, категория — помогает устранить эти проблемы. преобразователь кодов символов показывает точные значения Юникода и имена каждого символа.

Обработка текста с приоритетом конфиденциальности

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

Начиная

Скопируйте строку с диакритическими знаками в любой из наших текстовых инструментов и посмотрите, как работают нормализация и удаление диакритических знаков. Экспериментируйте с NFC и NFD, сравнивайте кодовые точки и повышайте уверенность в персонажах, с которыми вы работаете. Как только вы поймете, как работает Unicode, сопоставление текста и генерация slug станут предсказуемыми и надежными.