Preskoči na sadržaj
TextArray

Objašnjenje normalizacije Unicodea i skidanja naglasaka

Blog /

Zalijepite ime kao što je "José" u polje za pretraživanje i ono se ne podudara s drugom instancom "José" u vašim podacima—iako izgledaju identično na zaslonu. Izvezete popis na URL slug i dobijete dva različita niza bajtova od onoga što bi trebala biti ista riječ. Krivac je Unicode normalizacija, a njezino razumijevanje ključno je za obradu teksta, podudaranje podataka i kodiranje znakova.

Što je Unicode normalizacija?

Unicode omogućuje da isti vizualni znak bude predstavljen na više od jednog načina. Slovo "é" može postojati kao jedno unaprijed sastavljeno slovo (U+00E9) ili kao osnovno slovo "e" (U+0065) nakon kojeg slijedi kombinirani akutni naglasak (U+0301). Oba se prikazuju identično na zaslonu, ali imaju različite nizove bajtova. Normalizacija pretvara te varijante u kanonski oblik tako da se dosljedno uspoređuju i sortiraju.

NFC protiv NFD: dva uobičajena oblika

Dva oblika normalizacije s kojima ćete se susresti su:

Tu su i NFKC i NFKD (varijante kompatibilnosti) koje idu dalje, pretvarajući ligature i varijante stilova u njihove osnovne ekvivalente—korisno kada želite da "fi" odgovara "fi".

Zašto je to važno u praksi

Usporedba nizova ovisi o točnom podudaranju bajtova osim ako prvo ne normalizirate. Pretraživanje baze podataka za "café" u NFC obrascu neće pronaći "café" pohranjeno u NFD obrascu. URL-ove koji sadrže znakove s akcentima različiti sustavi mogu različito tumačiti. Algoritmi sortiranja proizvode različite redoslijede ako su neki unosi NFC, a drugi NFD. Bilo koji tekstualni cjevovod koji kombinira podatke iz više izvora—odgovori API-ja, korisnički prijenosi, naslijeđene baze podataka—riziči tiha nepodudaranja.

Normaliziranje i uklanjanje naglasaka za slugs i pretraživanje

Web adrese i ključevi baze podataka obično ne mogu sadržavati znakove s naglascima ili znakove za kombiniranje. Standardni pristup je normalizacija na NFC (ili ponekad NFD, zatim uklanjanje kombiniranih znakova), zatim potpuno uklanjanje naglasaka pomoću dekompozicije znakova. Ovo pretvara "naivnost" u "naivnost" za slug-siguran izlaz. Koristiti normalizirati-unicode da vidite kako NFC i NFD izgledaju ili ukloniti-akcente da ih skine u jednom koraku. Za maksimalnu kompatibilnost, ukloniti-ne-ascii ide dalje i uklanja sve znakove izvan ASCII raspona, ostavljajući samo a-z, A-Z i osnovnu interpunkciju.

Rukovanje Unicodeom u vašem tijeku rada

Prije nego što pretražujete, uspoređujete ili sortirate tekst u aplikaciji:

  1. Normalizirajte sav unos u NFC (ili NFD ako imate poseban razlog).
  2. Čuvati u istom obliku dosljedno.
  3. Usporedite, pretražite i sortirajte nakon normalizacije.

Prilikom izrade URL-ova ili identifikatora baze podataka, prvo normalizirajte, a zatim uklonite akcente i znakove koji nisu ASCII. Razumijevanje što je svaki znak zapravo - njegova kodna točka, kombinirane oznake, kategorija - pomaže u otklanjanju pogrešaka ovih problema. char-code-converter pokazuje vam točne Unicode vrijednosti i imena iza svakog znaka.

Obrada teksta na prvom mjestu privatnosti

Svi TextArray alati, uključujući Unicode i rukovanje naglascima, rade u potpunosti u vašem pregledniku. Tekst nikada ne napušta vaš uređaj, nisu potrebni nikakvi računi, a stranica radi offline nakon početnog učitavanja. Možete sigurno zalijepiti osjetljive podatke, eksperimentirati s normalizacijom i ukloniti naglaske bez učitavanja bilo čega na poslužitelj. Ovo je posebno vrijedno kada radite s privatnim imenima, adresama ili identifikatorima koje je potrebno očistiti prije upotrebe.

Početak rada

Kopirajte niz s naglascima u bilo koji od naših alata za tekst i pogledajte normalizaciju i skidanje naglasaka na djelu. Eksperimentirajte s NFC-om i NFD-om, usporedite kodne točke jednu pored druge i izgradite povjerenje u likove s kojima radite. Jednom kada shvatite kako Unicode funkcionira ispod haube, podudaranje teksta i generiranje slug postaju predvidljivi i pouzdani.