Preskoči na vsebino
TextArray

Razložena normalizacija Unicode in odstranjevanje naglasov

Blog /

V iskalno polje prilepite ime, kot je »José«, in se ne ujema z drugim primerkom »José« v vaših podatkih – čeprav sta na zaslonu videti enaka. Seznam izvozite v URL slug in dobite dve različni zaporedji bajtov iz tistega, kar bi morala biti ista beseda. Krivec je normalizacija Unicode in njeno razumevanje je bistveno za obdelavo besedila, ujemanje podatkov in kodiranje znakov.

Kaj je normalizacija Unicode?

Unicode omogoča, da je isti vizualni znak predstavljen na več kot en način. Črka "é" lahko obstaja kot en vnaprej sestavljen znak (U+00E9) ali kot osnovna črka "e" (U+0065), ki ji sledi kombinirani akut (U+0301). Oba se na zaslonu upodabljata enako, vendar imata različno zaporedje bajtov. Normalizacija pretvori te različice v kanonično obliko, tako da se dosledno primerjajo in razvrščajo.

NFC proti NFD: dve pogosti obliki

Dve obliki normalizacije, s katerimi se boste srečali, sta:

Obstajata tudi NFKC in NFKD (različice združljivosti), ki gredo dlje in pretvarjajo ligature in slogovne različice v njihove osnovne ekvivalente – uporabno, ko želite, da se "fi" ujema s "fi".

Zakaj je to v praksi pomembno

Primerjava nizov je odvisna od natančnega ujemanja bajtov, razen če najprej normalizirate. Iskanje po zbirki podatkov za "café" v obrazcu NFC ne bo našlo "café", shranjenega v obrazcu NFD. URL-je, ki vsebujejo naglašene znake, si lahko različni sistemi razlagajo različno. Algoritmi za razvrščanje ustvarijo različne vrstne rede, če so nekateri vnosi NFC in drugi NFD. Vsak besedilni cevovod, ki združuje podatke iz več virov – odzivi API-jev, nalaganja uporabnikov, podedovane zbirke podatkov – tvega tiha neujemanja.

Normalizacija in odstranjevanje naglasov za slugs in iskanje

Spletni naslovi in ključi zbirke podatkov običajno ne smejo vsebovati naglašenih znakov ali znakov za združevanje. Standardni pristop je normalizacija na NFC (ali včasih NFD, nato odstranite kombinirane znake), nato pa v celoti odstranite poudarke z uporabo razčlenitve znakov. To pretvori "naiveté" v "naivete" za izpis, varen z slug. Uporaba normalize-unicode da vidite, kako izgledata tako NFC kot NFD, oz odstrani-naglase jih odstraniti v enem koraku. Za največjo združljivost, odstrani-ne-ascii gre še dlje in odstrani vse znake izven obsega ASCII, pusti le a-z, A-Z in osnovna ločila.

Ravnanje z Unicode v vašem delovnem procesu

Preden iščete, primerjate ali razvrščate besedilo v aplikaciji:

  1. Normalizirajte ves vnos v NFC (ali NFD, če imate poseben razlog).
  2. Dosledno shranjujte v isti obliki.
  3. Primerjajte, iščite in razvrstite po normalizaciji.

Ko gradite URL-je ali identifikatorje baze podatkov, najprej normalizirajte, nato pa odstranite akcente in znake, ki niso ASCII. Razumevanje, kaj vsak znak dejansko je – njegova kodna točka, kombinirane oznake, kategorija – pomaga odpraviti te težave. char-code-pretvornik prikaže natančne vrednosti Unicode in imena za vsakim znakom.

Obdelava besedila na prvem mestu zasebnosti

Vsa orodja TextArray, vključno z Unicode in upravljanjem naglasov, delujejo v celoti v vašem brskalniku. Besedilo nikoli ne zapusti vaše naprave, računi niso potrebni in spletno mesto po začetnem nalaganju deluje brez povezave. Varno lahko prilepite občutljive podatke, eksperimentirate z normalizacijo in odstranite poudarke, ne da bi karkoli naložili na strežnik. To je še posebej dragoceno pri delu z zasebnimi imeni, naslovi ali identifikatorji, ki jih je treba pred uporabo očistiti.

Začetek

Kopirajte niz z naglasi v katero koli od naših besedilnih orodij in si oglejte normalizacijo in odstranjevanje naglasov v akciji. Eksperimentirajte z NFC in NFD, primerjajte kodne točke drugo ob drugi in pridobite zaupanje v znake, s katerimi delate. Ko enkrat razumete, kako Unicode deluje pod pokrovom, postaneta ujemanje besedil in generiranje slug predvidljiva in zanesljiva.