Unikod
Unicode® je standard za razmjenu podataka usmjeren na prikaz slova na način neovisan o jeziku, računalnom programu ili računalnoj platformi.
Unicode je naišao na široku podršku što se vidi i iz broja članova Unicode konzorcija.
Unicode svaki simbol predstavlja jednom kodnom točkom, što je jednostavno cijeli broj. Taj broj se tada može zapisati na različite načine. Trenutna verzija standarda omogućava kodne točke u opsegu 0x0 - 0x10FFFF (hex.), s tim da neke vrijednosti unutar tog opsega nisu moguće.
Opseg kodnih točaka 0x0 - 0xFFFF se naziva Basic Multilingual Plane (BMP).
Načini kodiranja
Da bi se i dosadašnjim sustavima omogućilo da bez većih teškoća usvoje Unicode način predstavljanja znakova, razvijeno je više načina kodiranja, poput:
- UTF-7 — dosta nepopularno i uglavnom se smatra zastarjelim
- UTF-8 — 8-bitno kodiranje, s promjenjvim brojem bajtova po znaku, vrlo popularno
- UCS-2 — 16-bitno kodiranje, s nepromjenjivim brojem bajtova po znaku, ali podržava samo Basic Multilingual Plane
- UTF-16 — 16-bitno kodiranje, s promjenjvim brojem bajtova po znaku
- UCS-4 i UTF-32 — 32-bitna kodirajna, za svaki znak zauzimaju svih 32 bita, functionalno su isti
- UTF-EBCDIC - nepopularno kodiranje orijentirano na sustave koji koriste samo EBCDIC kodnu shemu
Wikipedija koristi Unicode, i s web-pretraživačima koji sada koristite podatke razmjenjuje kroz UTF-8 način kodiranja.
Ravnine
Kodne točke Unicode standarda se mogu podijeliti na različite načine, najčešće za 17 ravnina, svaka s 65 536 (= 216) kodnih točaka. Trenutno se koristi tek nekoliko njih:
- Plane 0 (0000–FFFF): Basic Multilingual Plane (BMP). Osnovna ravnina, u kojoj se nalazi većina znakova.
- Plane 1 (10000–1FFFF): Supplementary Multilingual Plane (SMP).
- Plane 2 (20000–2FFFF): Supplementary Ideographic Plane (SIP).
- Plane 3 (30000–3FFFF): Tertiary Ideographic Plane (TIP)
- Planes 4 to 13 (40000–DFFFF) se za sada ne koriste
- Plane 14 (E0000–EFFFF): Supplementary Special-purpose Plane (SSP).
- Plane 15 (F0000–FFFFF) rezervirano za privatnu upotrebu, Private Use Area (PUA)
- Plane 16 (100000–10FFFF) rezervirano za privatnu upotrebu, Private Use Area (PUA)
Trenutno se koristi oko 26% prostora.
Prva ravnina (ravnina 0), tzv. Basic Multilingual Plane (BMP) uključuje veliku većinu znakova koji se koriste u modernim jezicima. Većina kodnih točaka se koriste za kodiranje kineskih, japanskih i korejskih znakova.
Slika desno predstavlja BMP. Objašnjenje boja:
- crno = latinica
- plavo = ostala europska pisma (ćirilica, grčko)
- svijetlo zeleno = afrička pisma
- narančasto = srednjeistočna i jugozapadna azijska pisma (arapsko, itd)
- zeleno = južna i središnje azijska pisma (Indija)
- purpurno = jugoistočna azijska pisma
- crveno = istočna azijska pisma
- svjetlocrveno = kinesko pismo
- žuto = pisma kanadskih domorodaca
- ljubičasto = simboli
- svjetlosivo = privatnu upotrebu
- bijelo = ne koristi se
Povijest
Kako računala u svojoj srži rukuju brojevima, sva slova i drugi znakovi koje računala prikazuju su unutar računala pohranjena kao brojevi. I druge naprave, poput teleprintera također koriste načelo da se slova i znakovi predstavljaju brojevima.
Upravo su teleprinteri zanimljivi primjer, jer su zbog pojednostavljenja konstruirani da razlikuju svega 32 simbola, od kojih su većina bila vidljiva slova. Teleprinteri su stoga za predstavljanje svakog od tih simbola koristili 5-bitni broj. No ograničenja su bila velika. Kako je na raspolaganju bilo jako malo vidljivih znakova, teleprinteri su bili u stanju prikazati samo velika slova engleske abecede. Čak se niti brojčane znamenke nisu mogle prikazati.
Širom primjenom računala uskoro se nametnula potreba za prikazivanjem i malih slova (iako i dalje samo slova engleske abecede), brojčanih znamenki, te mnogih interpunkcijskih znakova. Ti zahtjevi su ispunjenu uvođenjem 7-bitne kodne sheme, koja je mogla razlikovati 128 simbola. Najpoznatiji predstavnici su ASCII i EBCDIC kodne sheme. Među tih 128 različitih simbola, našlo se mjesta i za mnoge upravljačke simbole, poput simbola za prijelaz u novi red („line-feed”, LF), prijelaz na novu stranicu („form-feed”, FF) i druge. Kako su računala, zapravo kao i danas, smatrana strateškom tehnologijom, vodeće zemlje proizvođači nisu razmatrala potrebe drugih jezika.
Širenjem računalnog tržišta računala su postala široko upotrebljavana i u zemljama koje ne koriste engleski jezik, te se time pojavila i potreba za prikazom slova tih jezika. Jedan pristup je bio da su zemlje prelagođavale postojeće kodne sheme (i ASCII i EBCDIC) tako da su manje korištene znakove zamjenjivale znakovima koje su same trebale. Tako je u Jugoslaviji ponikao neobični YUSCII standard. I danas ga se može sresti, ali ga treba izbjegavati (članak na srpskom jeziku).
Sljedeći korak je bilo proširenje kodne sheme na 8 bita, čime se dobilo dodatnih 128 mjesta, odnosno ukupno 256 mjesta za simbole. Time se omogućilo da ne-engleski jezici imaju prostor za smještanje svih svojih slova, dok bi osnovnih 128 znakova bili standardni ASCII odnosno EBCDIC znakovi. Jasno, svi ne-engleski jezici nisu mogli stati u tih dodatnih 128 slova. Samo hrvatski jezik traži 19 od tih mjesta, pa kada tome dodamo naglašene samoglasnike koji su ponekad potrebni (a i neizostavni u drugim jezicima), prijeglase, zatim francuska i njemačka posebna slova, skandinavska slova, i tako dalje, raspoloživi prostor i dalje nije bio dovoljan. A k tome treba tek dodati grčko, ćirilično i mnoga druga pisma. Rješenje je bilo da se izradi više tih 8-bitnih shema, zvanih kodne stranice s idejom da sve dijele osnovnih 128 znakova, dok bi svaka u gornjih 128 znakova imala svoje posebnosti. ISO-8859 je jedan od standarda baziranih na ideji kodnih stranica.
No ni jedno od spomenutih rješenja nije riješilo problem na globalnoj razini, već je samo omogućilo ispravnu komunikaciju unutar ograničenog skupa ljudi. Npr. kodni broj koji bi u Hrvatskoj predstavljao slovo Č, bi u Francuskoj predstavljao neko sasvim drugo slovo. Toga nisu bili pošteđeni čak ni govornici engleskog jezika, jer je isti kodni broj u Sjedinjenim Američkim državama predstavljao znak za dolar, a u Velikoj Britaniji znak za funtu. Dakle, globalno dopisivanje i točna razmjena podataka nisu bile moguće. Nažalost, aktualna Preporuka Hrvatske informatičke zajednice i dalje preporuča razmjenu podataka temeljenu na kodnim stranicama, no barem su izabrali ISO inačicu, konkretno ISO-8859-2.
Potrebno je rješenje koje će moći predstaviti daleko veći skup od dotadašnjih 256 znakova. Dva pokreta su neovisno krenula u rješenje tog problema. Bili su to Unicode konzorcij i ISO, međunarodna organizacija za standardizaciju. Na sreću, na vrijeme su uočili da rade na istom problemu, te su uskladili napore i proizveli usaglašene standarde ISO-10646 odnosno Unicode. Ovi standardi omogućuju ispravno bilježenje i razlikovanje preko milijun znakova, što nam omogućuje ispravan i nedvosmislen prikaz znakova korištenih u mnogobrojnim jezicima i pismima.
Primjeri znakova
Unicode vjerojatno već i koristite, jer je sva potrebna podrška ugrađena u suvremene operacijske sustave (poput Linuxa, Mac OS-a, Microsoft Windowsa i drugih). Ukoliko koje slovo ne vidite na ekranu (već je prikazano kao pravokutnik, poželjno sa osam malih heksadecimalnih znamenaka u njemu), to samo znači da niti jedan od fontova instaliranih na Vašem računalu ne sadrži opis izgleda tog slova. No unatoč tome, podaci na Vašem računalu se pravilno pohranjuju i razmjenjuju kroz mrežu.
Sljedeći primjeri pokazuju kako se u jednom dokumentu mogu istovremeno koristiti mnogobrojni jezici i pisma, pri čemu je svako slovo jedinstveno predstavljeno. Dakle, ne koriste se neke povijesne varke, na primjer kada su se za ćirilićno pismo koristili isti brojčani kodovi kao i za latinično, samo je oblik slova na ekranu bio drugačiji. Unicode razlikuje ove znakove, iako se svi čitaju istim glasom: B Б ب .
Unicode također razlikuje vrste slova, kako je već prikladno kojem pismu. Tako se u latinici razlikuju velika i mala slova, dok se recimo u arapskom pismu razlikuju samostalna slova, te slova na početku, u sredini i na kraju pisane riječi.
Primijetite i da su takozvana dvostruka slova u hrvatskoj abecedi prikazana pravilno, kao jedno nedjeljivo slovo:
- Hrvatska abeceda
- A a B b C c Č č Ć ć D d DŽ Dž dž Đ đ E e F f G g H h I i J j K k L l LJ Lj lj M m N n NJ Nj nj O o P p R r S s Š š T t U u V v Z z Ž ž
- Neki interpunkcijski i drugi simboli
- „ ” “ « » • † ° ÷ © ® ™ … — – ― € £ $ ¥ ¢ ¤ · × ¬ ‰ ± §
- Srpska ćirilica
- А а Б б В в Г г Д д Ђ ђ Е е Ж ж З з И и Ј ј К к Л л Љ љ М м Н н Њ њ О о П п Р р С с Т т Ћ ћ У у Ф ф Х х Ц ц Ч ч Џ џ Ш ш
- Makedonska ćirilica
- А Б В Г Д Ѓ Е Ж З Ѕ И Ј К Л Љ М Н Њ О П Р С Т Ќ У Ф Х Ц Ч Џ Ш
- Grčki alfabet
- Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω
- Arapsko pismo
- ـآ آ ـا ا بـبـب ب تـتـت ت ثـثـث ث جـجـج ج حـحـح ح خـخـخ خ ـد د ـذ ذ ـر ر ـز ز سـسـس س شـشـش ش صـصـص ص ضـضـض ض طـطـط ط ظـظـظ ظ عـعـع ع غـغـغ غ فـفـف ف ڤـڤـڤ ڤ قـقـق ق كـكـك ك لـلـل ل مـمـم م نـنـن ن هـهـه ه ـة ة ـو و يـيـي ي ( یـیـی ی ) ـى ى