Перейти до вмісту
TextArray

Пояснення щодо нормалізації Unicode та видалення акцентів

Blog /

Ви вставляєте ім’я на кшталт «Хосе» в поле пошуку, і воно не збігається з іншим екземпляром «Хосе» у ваших даних, навіть якщо вони виглядають однаково на екрані. Ви експортуєте список до URL-адреси slug і отримуєте дві різні послідовності байтів із того самого слова. Виною цьому є нормалізація Unicode, і її розуміння є важливим для обробки тексту, зіставлення даних і кодування символів.

Що таке нормалізація Unicode?

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

NFC проти NFD: дві поширені форми

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

Існують також NFKC і NFKD (варіанти сумісності), які йдуть далі, перетворюючи лігатури та варіанти стилів у їхні базові еквіваленти — це корисно, коли ви хочете, щоб «fi» відповідало «fi».

Чому це важливо на практиці

Порівняння рядків залежить від точної відповідності байтів, якщо ви спочатку не нормалізуєте. Пошук у базі даних за запитом "café" у формі NFC не знайде "café", збереженої у формі NFD. URL-адреси, що містять символи з акцентами, можуть по-різному інтерпретуватися різними системами. Алгоритми сортування створюють різні порядки, якщо одні записи NFC, а інші NFD. Будь-який текстовий конвеєр, який поєднує дані з кількох джерел (відповіді API, завантаження користувачів, застарілі бази даних), ризикує невідповідностями.

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

Веб-адреси та ключі бази даних зазвичай не можуть містити символи з наголосами чи комбіновані знаки. Стандартним підходом є нормалізація до NFC (або інколи NFD, потім видалення комбінованих символів), а потім повністю видалення акцентів за допомогою декомпозиції символів. Це перетворює "naiveté" на "naivete" для slug-безпечного виведення. використання normalize-unicode щоб побачити, як виглядають NFC і NFD, або зняти наголоси зняти їх одним кроком. Для максимальної сумісності видалити-не-ascii йде далі та видаляє будь-які символи за межами діапазону ASCII, залишаючи лише a-z, A-Z та основну пунктуацію.

Робота з Unicode у вашому робочому процесі

Перш ніж шукати, порівнювати або сортувати текст у програмі:

  1. Нормалізуйте весь вхід до NFC (або NFD, якщо у вас є певна причина).
  2. Зберігати в такому ж вигляді постійно.
  3. Порівнюйте, шукайте та сортуйте після нормалізації.

Під час створення URL-адрес або ідентифікаторів бази даних спочатку нормалізуйте, а потім видаліть наголоси та символи, що не належать до ASCII. Розуміння того, чим насправді є кожен символ — його кодова точка, комбіновані позначки, категорія — допомагає усунути ці проблеми. char-code-converter показує точні значення Unicode та імена за кожним символом.

Обробка тексту, перш за все конфіденційність

Усі інструменти TextArray, включаючи Unicode та обробку наголосу, повністю працюють у вашому браузері. Текст ніколи не покидає ваш пристрій, облікові записи не потрібні, а сайт працює в автономному режимі після початкового завантаження. Ви можете безпечно вставляти конфіденційні дані, експериментувати з нормалізацією та видаляти акценти, не завантажуючи нічого на сервер. Це особливо важливо під час роботи з приватними іменами, адресами чи ідентифікаторами, які потребують очищення перед використанням.

Початок роботи

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