Objašnjenje normalizacije Unicodea i skidanja naglasaka
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:
- NFC (kanonska dekompozicija, nakon koje slijedi kanonska kompozicija) — kombinira osnovne znakove s njihovim naglascima u pojedinačne unaprijed sastavljene znakove. Ovo je W3C zadana i najčešći obrazac na webu.
- NFD (kanonska dekompozicija) — rastavlja unaprijed sastavljene znakove u njihov osnovni znak plus kombinirane oznake. Korisno kada trebate zasebno manipulirati ili pregledavati naglaske.
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:
- Normalizirajte sav unos u NFC (ili NFD ako imate poseban razlog).
- Čuvati u istom obliku dosljedno.
- 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.