Объяснение нормализации Unicode и удаления акцентов
Вы вставляете имя типа «Хосе» в поле поиска, и оно не соответствует другому экземпляру «Хосе» в ваших данных, хотя на экране они выглядят одинаково. Вы экспортируете список в URL-адрес slug и получаете две разные последовательности байтов из того, что должно быть одним и тем же словом. Виновником является нормализация Unicode, и понимание этого важно для обработки текста, сопоставления данных и кодирования символов.
Что такое нормализация Unicode?
Юникод позволяет представлять один и тот же визуальный символ несколькими способами. Буква «é» может существовать как одиночный заранее составленный символ (U + 00E9) или как базовая буква «e» (U + 0065), за которой следует комбинированный острый ударение (U + 0301). Оба отображаются на экране одинаково, но имеют разные последовательности байтов. Нормализация преобразует эти варианты в каноническую форму, поэтому они последовательно сравниваются и сортируются.
NFC против NFD: две распространенные формы
Вы встретите две формы нормализации:
- NFC (каноническое разложение с последующей канонической композицией) — объединяет базовые символы с их акцентами в отдельные заранее составленные символы. Это стандартная форма W3C, наиболее распространенная в Интернете.
- NFD (каноническое разложение) — разбивает заранее составленные символы на их базовый символ плюс объединение знаков. Полезно, когда вам нужно манипулировать или проверять акценты отдельно.
Существуют также NFKC и NFKD (варианты совместимости), которые идут дальше, преобразуя лигатуры и варианты стилей в их базовые эквиваленты, что полезно, когда вы хотите, чтобы «fi» соответствовало «fi».
Почему это важно на практике
Сравнение строк зависит от точного соответствия байтов, если вы сначала не нормализуетесь. При поиске в базе данных слова «кафе» в форме NFC не будет найдено слово «кафе», хранящееся в форме NFD. URL-адреса, содержащие акцентированные символы, могут интерпретироваться разными системами по-разному. Алгоритмы сортировки выдают разные порядки, если некоторые записи являются NFC, а другие — NFD. Любой текстовый конвейер, который объединяет данные из нескольких источников — ответов API, пользовательских загрузок, устаревших баз данных — рискует обнаружить несоответствия.
Нормализация и удаление акцентов для slugs и поиска
Веб-адреса и ключи базы данных обычно не могут содержать символы с диакритическими знаками или комбинированные знаки. Стандартный подход состоит в том, чтобы нормализовать NFC (или иногда NFD, затем удалить объединяющиеся символы), а затем полностью удалить акценты, используя разложение символов. Это преобразует «наивность» в «наивность» для вывода, безопасного для slug. Использовать нормализовать-Юникод чтобы увидеть, как выглядят NFC и NFD, или удалить акценты чтобы раздеть их за один шаг. Для максимальной совместимости удалить не-ascii идет дальше и удаляет все символы за пределами диапазона ASCII, оставляя только a-z, A-Z и основные знаки препинания.
Использование Unicode в вашем рабочем процессе
Прежде чем искать, сравнивать или сортировать текст в приложении:
- Нормализуйте все входные данные в NFC (или NFD, если у вас есть конкретная причина).
- Храните последовательно в том же виде.
- Сравнивайте, ищите и сортируйте после нормализации.
При создании URL-адресов или идентификаторов базы данных сначала нормализуйте, а затем удалите диакритические знаки и символы, отличные от ASCII. Понимание того, что на самом деле представляет собой каждый символ — его кодовая точка, сочетание знаков, категория — помогает устранить эти проблемы. преобразователь кодов символов показывает точные значения Юникода и имена каждого символа.
Обработка текста с приоритетом конфиденциальности
Все инструменты TextArray, включая Unicode и обработку акцентов, полностью работают в вашем браузере. Текст никогда не покидает ваше устройство, учетные записи не требуются, а сайт работает в автономном режиме после первоначальной загрузки. Вы можете безопасно вставлять конфиденциальные данные, экспериментировать с нормализацией и удалять акценты, не загружая ничего на сервер. Это особенно ценно при работе с частными именами, адресами или идентификаторами, которые необходимо очистить перед использованием.
Начиная
Скопируйте строку с диакритическими знаками в любой из наших текстовых инструментов и посмотрите, как работают нормализация и удаление диакритических знаков. Экспериментируйте с NFC и NFD, сравнивайте кодовые точки и повышайте уверенность в персонажах, с которыми вы работаете. Как только вы поймете, как работает Unicode, сопоставление текста и генерация slug станут предсказуемыми и надежными.