Što je Unicode: Potpuni vodič, upotreba i kodiranje

Zadnje ažuriranje: 20 kolovoz 2025
  • Unicode dodjeljuje jedinstvenu kodnu točku svakom znaku i sinkronizira njegov repertoar s ISO/IEC 10646.
  • UTF-8, UTF-16 i UTF-32 kodiraju iste znakove i omogućuju pretvorbu bez gubitaka.
  • Svojstva normalizacije, Bidi i UCD osiguravaju dosljednu usporedbu, sortiranje i renderiranje.
  • Usvajanje Unicodea (po mogućnosti UTF-8 na webu) sprječava korupciju i olakšava internacionalizaciju.

Generička ilustracija o Unicodeu

Unicode je uobičajeni jezik kojim računala govore pri obradi teksta : svakom znaku i simbolu, iz gotovo svakog sustava pisanja, dodjeljuje jedinstveni broj, tako da se tekst može besprijekorno pohranjivati, obrađivati ​​i dijeliti između platformi i zemalja.

Ovaj standard nastao je kako bi prevladao ograničenja starih skupova znakova ( ASCII skup , kodne stranice, EBCDIC itd.), koji nisu bili dovoljni ili međusobno nekompatibilni, a danas je sinkroniziran s ISO/IEC 10646, održava algoritme (poput dvosmjernog) te definira svojstva i pravila normalizacije tako da sve radi dosljedno.

Što je Unicode i zašto je toliko važan?

Unicode je univerzalni i stalno promjenjivi standard kodiranja znakova koji svaki znak opisuje imenom, kodnom točkom i skupom svojstava (pismo, kategorija, smjer, velika i mala slova itd.). Tehnički odbor Unicode (UTC), unutar Unicode konzorcija, održava ga usklađenim sa standardom ISO/IEC 10646.

Njegov je cilj univerzalnost, ujednačenost i jedinstvenost : širok repertoar koji omogućuje nedvosmislenu razmjenu višejezičnog teksta, s jasnim i ponovljivim pravilima. Zahvaljujući tome, moderne tehnologije (operativni sustavi, preglednici, XML, Java, baze podataka) mogu miješati latinična i arapska pisma, CJK ideograme, emojije i tehničke ili glazbene simbole unutar istog dokumenta.

Znakovi, glifovi i kodne točke

U Unicodeu, znak je apstraktna jedinica informacije, a kodna točka je njegov numerički identifikator . Glif je vizualni oblik (ono što vidite na zaslonu) koji ovisi o fontu . Jedan znak može imati više glifova, a ponekad glif predstavlja više od jednog znaka.

Uobičajena oznaka za kodnu točku je U+XXXX u heksadecimalnom sustavu . Ilustrativni primjeri iz analiziranog materijala: malo slovo 'l' je U+006C, unaprijed sastavljeno malo slovo 'ü' je U+00FC, 'é' je U+00E9 i grčka beta: veliko slovo je U+0392, a malo slovo U+03B2 (u nekim tekstovima 'β' se navodi s U+0392, ali taj kod odgovara velikom slovu 'Β').

Unicode kodni prostor ima 1.114.112 mogućih pozicija (do U+10FFFF) , organiziranih tako da pokrivaju i klasificiraju sve sustave pisanja i simbole, s desecima tisuća učinkovitih i rastućih dodjela u svakoj verziji.

Planovi, područja i blokovi

Unicode dijeli svoj prostor znakova na 17 ravnina s do 65 536 kodnih točaka svaka . Ova organizacija olakšava grupiranje povezanih pisama i simbola te brzo pronalaženje onoga što tražite.

Najrelevantnije ravnine : Osnovna višejezična ravnina (BMP, ravnina 0) okuplja gotovo sve moderne abecede i mnoge simbole; Dopunska višejezična ravnina (SMP, ravnina 1) pohranjuje povijesna pisma i tehničke simbole (npr. glazbene i matematičke); Dopunska ideografska ravnina (SIP, ravnina 2) proširuje ideograme CJK-a; ravnina 14 (SSP) uključuje posebne oznake; a ravnine 15 i 16 su za privatnu upotrebu.

Blokovi i područja : karte su neformalno podijeljene na područja, a formalno na susjedne blokove. Blokovi se koriste za tablični prikaz i dokumentiranje znakova, iako ne odgovaraju uvijek smislenim jezičnim grupacijama.

  Kompjuterizirani sustavi upravljanja zalihama

Ideogrami CJK i projekt Unihan

Istočnoazijski (Han) ideogrami su ujedinjeni u Unicodeu sa stilskim varijacijama po regijama , ali svi se odnose na isti apstraktni znak. Njihovim upravljanjem bavi se Ideographic Reporter Group (IRG), ISO/IEC JTC1/SC2/WG2 grupa s predstavnicima iz Kine, Japana, Koreje, Vijetnama, Hong Konga, Makaa, Singapura, SAD-a i drugih.

Unihanova baza podataka okuplja pomoćne informacije (čitanja, značenja, ekvivalencije) bitne za rukovanje ovim ideogramima u različitim jezicima i povijesnim ili korporativnim standardima.

Glavni CJK blokovi i proširenja :

  • Ujedinjeni ideogrami CJK-a (BMP, U+4E00–U+9FFF)20.992 često korištenih znakova.
  • Proširenje A (BMP, U+3400–U+4DBF)6.592 rjeđih ideograma.
  • B–H ekstenzije: u SMP/SIP/TIP-u, zbrajaju se i do desetaka tisuća više (B: U+20000–U+2A6DF, 42.720; C: U+2A700–U+2B73F, 4.154; D: U+2B740–U+2B81F, 222; E: U+2B820–U+2CEAF, 5.762; F: U+2CEB0–U+2EBEF, 7.473; G: U+30000–U+3134F, 4.939;
  • Ostali povezani CJK blokoviKangxi radikali (U+2F00–U+2FDF), CJK simboli i interpunkcija (U+3000–U+303F), Kompatibilnost i formati kompatibilnosti, Dodatak ideograma kompatibilnosti itd.

Unicode predviđa da uključivanje ideograma neće imati apsolutni kraj i razmatra mehanizme poput ideografskih opisnih nizova za predstavljanje nekodiranih simbola njihovim raščlanjivanjem na postojeće komponente (uz oprez: bez kanonske dekompozicije ili jamstava u operacijama poput pretraživanja ili naručivanja).

Oblici kodiranja: UTF-8, UTF-16 i UTF-32

Unicode definira oblike transformacije (UTF) koji pretvaraju kodne točke u jedinice pohrane tako da softver može učinkovito obrađivati ​​tekst prema njegovom kontekstu.

UTF-8 je format kodiranja promjenjive duljine, orijentiran na bajtove, koji je ASCII-kompatibilan u rasponu od U+0000 do U+007F u jednom bajtu. Trenutni standard koristi 1 do 4 bajta po znaku; neki stariji tekstovi spominju 1-6, ali u modernom Unicodeu to je 1-4. To je dominantan format na webu.

UTF-16 koristi 16-bitne jedinice

(jedna ili dvije kodne jedinice po znaku) : većina BMP znakova stane u jednu jedinicu; dodatni znakovi koriste zamjenske parove u rasponu U+D800–U+DFFF.

UTF-32 je fiksne duljine: 4 bajta po znaku, jednostavan, ali zauzima puno prostora; koristan kada je izravno indeksiranje znakova važno, a memorija nije problem.

Kako su bitovi distribuirani u UTF-8

UTF-8 format distribuira bitove kodnih točaka u nizove od 1 do 4 bajta s prepoznatljivim zaglavljima, što izbjegava dvosmislenosti i olakšava otkrivanje granica znakova.

Unicode raspon Uzorak bita Bytes
U+0000..U+007F 0xxxxxx 1
U+0080..U+07FF 110yyyyy 10xxxxxx 2
U+0800..U+FFFF 1110zzzz 10yyyyyy 10xxxxxx 3
U+010000..U+10FFFF 11110uuu 10uuzzz 10yyyyyy 10xxxxxx 4

Ključna prednost UTF-8 je što izbjegava probleme s redoslijedom bajtova (endianness) i omogućuje vrlo učinkovitu obradu tekstualnih tokova, uz to što je unatrag kompatibilan s ASCII-jem.

Sheme kodiranja, endianness i BOM

Uz UTF oblike, Unicode opisuje sheme serijalizacije koje rješavaju kako se bajtovi prenose između sustava s različitim endian načinom rada i kako se signaliziraju aspekti poput redoslijeda bajtova.

  • UTF-8: endiannost se ne primjenjuje. Može se prenijeti Oznaka bajtova (BOM) kao savjet, iako nije obavezan ili preporučen prema zadanim postavkama.
  • UTF-16BE/LE (big/little-endian) varijante i opcionalni BOM (ako nedostaje i nije definirano protokolom, pretpostavlja se big-endian).
  • UTF-32BE/LE varijante s analognim pravilima; BOM dopušten kao oznaka narudžbe.
  IT inovacije: najnoviji trendovi

Postoje i specifične varijante kao što su UTF-16BE/UTF-16LE i UTF-32BE/UTF-32LE (bez BOM-a prema konvenciji), te druga povijesna kompatibilna kodiranja kao što su UTF-7 ili UTF-EBCDIC, uz GB18030 (kineski ekvivalent UTF-8 s podrškom za pojednostavljeni i tradicionalni kineski).

Normalizacija, kompozicija i ekvivalencije

Mnogi znakovi mogu se predstaviti kao unaprijed sastavljene ili kao nizovi baze + kombinirajućih znakova . Klasični primjeri iz revidiranog materijala: unaprijed sastavljena 'Ä' je U+00C4, dok je dekomponirana forma 'A' (U+0041) + diareza (U+0308). Vijetnamska 'ỗ' može se predstaviti kao 'o' (U+006F) + cirkumfleks (U+0302) + tilda (U+0303).

Unicode definira standardizirane oblike i dvije vrste ekvivalencije : kanonsku (isti bitni sadržaj) i kompatibilnost (oblici koji mogu izgledati isto, ali imaju semantičke razlike). Standardizacija osigurava pouzdanu usporedbu nizova i smanjuje dupliciranje.

Dvosmjerni algoritam i posebni znakovi

Za pisma s desna na lijevo, poput arapskog ili hebrejskog, Unicode uključuje standardizirani i promjenjivi dvosmjerni algoritam (Bidi) (npr. revizije u verziji 6.3), tako da se miješani tekstovi s latinicom i arapskim pismom prikazuju ispravnim vizualnim redoslijedom.

Klase kodnih točaka koje treba znati prema primljenom materijalu: grafički znakovi (slova, znakovi, simboli), formatiranje (nevidljivi znakovi koji utječu na obradu: U+2028 prijelom retka, U+2029 prijelom odlomka, U+00A0 tvrdi razmak), naslijeđeni kontrolni kodovi za kompatibilnost (rasponi U+0000–U+001F, U+007F, U+0080–U+009F), privatna upotreba, rezervirane pozicije, zamjene (U+D800–U+DFFF za UTF-16) i ne-znakovi (U+FFFE, U+FFFF u svakoj ravnini).

Unicode, ISO/IEC 10646 i drugi standardi (ASCII, ANSI, kodne stranice)

Unicode je sinkroniziran s ISO/IEC 10646 (UCS) i zadržava mapiranja na prethodne standarde (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643, itd.), uz rezerviranje prostora za privatnu upotrebu proizvođača.

ASCII vs. Unicode : ASCII je 7-bitni skup znakova sa 128 znakova , dovoljan za osnovni engleski, ali nedovoljan za jezike s dijakritičkim znakovima, ideogramima ili emotikonima . Unicode pokriva više od 140 000 znakova i nastavlja rasti, s 8/16/32-bitnim kodiranjem prema UTF-12 formatu.

ANSI i kodne stranice : 'ANSI' se obično odnosi na ograničene i međusobno nekompatibilne 8-bitne Windows kodne stranice. Računalo s OEM-Latin II koje otvara tekst u IBM EBCDIC-ćirilici vidjet će netočne znakove. Unicode rješava ovaj problem s jednim skupom znakova i pretvorbama bez gubitaka između vlastitih oblika.

Implementacija na sustavima (Windows, Solaris) i konverzija

Windows interno koristi UTF-16 za svoje moderne API-je i nudi značajke poput MultiByteToWideChar i WideCharToMultiByte za pretvaranje između Unicode i kodnih stranica (SBCS/DBCS/MBCS). Ako ste prisiljeni pretvoriti u kodnu stranicu, može doći do gubitka podataka ako ne može prikazati sve znakove.

Nove aplikacije na Windowsima trebale bi interno koristiti UTF-16 i prepustiti pretvorbu rubovima (I/O, protokoli), minimizirajući oštećenje. Unatoč tome, Windows održava kompatibilnost s kodnim stranicama kada je to neizbježno.

Oracle Solaris 11, prema revidiranoj dokumentaciji, podržava Unicode 6.0 i ISO/IEC 10646:2011 na razini sustava, koristeći UTF-8 kao zadani format u svojim skupovima parametara, što štedi probleme s redoslijedom bajtova i transparentno čuva ASCII.

Unicode u praksi: Web, dokumenti i programiranje

Na webu je uobičajeno posluživati ​​i pohranjivati ​​sadržaj u UTF-8 . U HTML-u deklarirajte '<meta charset="UTF-8">' kako biste osigurali kompatibilnost i koristite heksadecimalne numeričke entitete kada je to potrebno (primjer: euro '&#x20AC;').

  Što je recikliranje i čemu služi: Potpuni vodič

U Wordu možete jednostavno umetnuti Unicode simbole postavljanjem kursora, odabirom Umetanje > Simbol ili upisivanjem koda i pritiskom na Alt+X; to pretvara vrijednost u njezin znak, slijedeći standardne postupke. Pogledajte i popis Alt kodova za umetanje simbola s tipkovnice.

U programskim jezicima : u Pythonu 3, nizovi znakova su već Unicode; u Javi i C# možete koristiti escape znakove '\uXXXX'; u HTML-u, '&#xXXXX;'. Važno je da uređivanje, kompilacija i prijenos koriste isto kodiranje kako bi se izbjegle pogreške.

Kopiranje i lijepljenje simbola funkcionira ako je cijeli niz u Unicode formatu . Ako neki njegovi dijelovi koriste drugačije kodiranje, mogu se pojaviti upitnici, kvadratići ili drugi neobični simboli.

Baza znakova (UCD), svojstva i kategorije

Baza podataka Unicode znakova (UCD) objavljuje, za svaku kodnu točku, njezin naziv, kategoriju, pismo, svojstva velikih i malih slova, smjer i druge karakteristike . Ove su informacije ključne za ispravan rad mehanizama za renderiranje i obradu teksta.

Zahvaljujući tim svojstvima , različite komponente i algoritmi (poput sortiranja, segmentacije riječi ili transformacije velikih/malih slova) mogu se ponašati konzistentno s istim podacima.

Verzije i proširenja standarda: najvažnije

Unicode raste sa svakom verzijom , uključujući nova pisma, simbole i emojije. Ključne prekretnice uključuju verziju 1.0 iz 1991. sa 7.161 znakom i naknadna proširenja koja su dodala tisuće novih simbola, ideograma, emojija i pisama.

Na primjer, 2022. godine , verzija 15.0 dodala je 4.192 dodatna ideograma CJK-a i drugih elemenata, dosegnuvši približno 149 186 znakova.

Alati za istraživanje Unicode tablice

Postoje besplatni uslužni programi za pretraživanje i analizu znakova : Unibook Character Browser, SYMBL i Branah.com omogućuju vam pretraživanje svojstava, imena i blokova znakova, što programerima i kreatorima sadržaja olakšava brzo pronalaženje potrebnih informacija.

Primjeri upotrebe: obrasci za adrese, internacionalizacija i poslovanje

Omogućavanje korisnicima unosa adresa na vlastitom jeziku i pismu pomaže u smanjenju pogrešaka i poboljšanju korisničkog iskustva. Osim toga, interoperabilnost Unicodea sprječava probleme s pretvorbom između različitih sustava, održavajući integritet teksta u cijelom digitalnom lancu.

Zbog toga je Unicode temeljni element koji osigurava da tekst ostane konačan u cijeloj digitalnoj infrastrukturi , od web obrazaca do sustava baza podataka i tiskanih dokumenata, bez obzira koristite li 'ñ', arapski, kineski ili emojije u istoj rečenici.

Binarno numeriranje
Povezani članak:
Binarno numeriranje: tajni jezik računala