bitlvl
SR

Unicode inspektor

Nalepite tekst koji izgleda ispravno, ali se ne poklapa, ne poredi ili ne sortira. Inspektor navodi svaki znak i označava one koje ne možete da vidite.

Normalizuj u

Rezultati i poruke ovog alata prikazuju se na engleskom.

Zašto tekst koji izgleda identično to nije

Unicode ima više od 150.000 znakova i mnogi od njih su nevidljivi ili izgledaju potpuno isto kao neki drugi. String kopiran sa veb stranice, iz PDF-a ili čet aplikacije može da nosi razmake nulte širine, nelomljive razmake, meke crtice, oznake smera i oznaku redosleda bajtova, od kojih se nijedan ne vidi na ekranu, a svi čine da poređenja, prijave i pretrage baze ne uspeju. Dvojnici su gori: ćirilično а (U+0430) je u većini fontova piksel-identično latiničnom a (U+0061), što je osnova homografskih phishing domena i tiketa tipa „zašto ovo korisničko ime ne postoji“.

Šta inspektor prijavljuje

  • Kodna tačka (U+00E9): broj koji Unicode dodeljuje. Jedan vidljivi znak može biti jedna kodna tačka (é prekomponovano) ili dve (e + kombinujući akut), što je razlika NFC/NFD.
  • UTF-8 bajtovi: 1–4 bajta po kodnoj tački; ono što se čuva u datotekama, bazama i HTTP-u. UTF-16 jedinice: ono što broje JavaScript i Java stringovi; emodži zauzima dve.
  • Grafemi: ono što čovek vidi kao jedan znak. Emodži zastava je jedan grafem, dve kodne tačke, osam UTF-8 bajtova.

Normalizacija

NFC sastavlja osnovu + oznaku u jednu kodnu tačku tamo gde ona postoji; NFD rastavlja. Poredite i čuvajte tekst u NFC (imena datoteka sa macOS-a stižu u NFD, što je klasična greška pri sinhronizaciji). NFKC i NFKD dodatno sažimaju kompatibilne znakove: ligature, slova pune širine, eksponenti i znakovi rimskih brojeva postaju svoji obični ekvivalenti, što želite za pretragu i identifikatore, ali uništava formatiranje.

Čišćenje unosa

Za identifikatore, korisnička imena i domene: normalizujte u NFKC, uklonite znakove koje ovaj alat označava kao nevidljive, i odbijte ili upozorite na mešana pisma. Opcija „sakrij nevidljive“ daje vam očišćeni string za kopiranje.

Pitanja

Šta je razmak nulte širine?

U+200B, znak bez širine koji označava moguće mesto preloma reda. Preživljava kopiranje i lepljenje i nevidljiv je u gotovo svakom editoru. Programi za obradu teksta, Slack i neke veb stranice ga ubacuju; ovaj inspektor označava svaki.

Zašto se "é" ponekad broji kao dva znaka?

Može da se zapiše kao jedna kodna tačka U+00E9 ili kao U+0065 e praćeno sa U+0301 kombinujući akut. Izgledaju isto, a porede se kao različiti osim ako se oba ne normalizuju u NFC.

Kako da ukucam znak po kodnoj tački?

Linux (GTK): Ctrl+Shift+U, pa heks, pa razmak. macOS: uključite izvor unosa Unicode Hex Input i držite Option. Windows: ukucajte heks pa Alt+X u Wordu i WordPadu. U kodu: "\u{1F600}" (JS), "\N{...}" ili "\U0001F600" (Python).

Koja je razlika između UTF-8 i Unicodea?

Unicode je katalog znakova i njihovih brojeva. UTF-8 (i UTF-16, UTF-32) je način da se ti brojevi zapišu kao bajtovi. UTF-8 je onaj koji se koristi svuda na vebu.