Prvi računari su bili pravljeni pretežno za englesko govorno područje i imali su podršku samo za engleskialfabet, za brojeve, zagrade i još poneki kontrolni znak, što je činilo ukupno 128 mogućih slova (u 7 bita). To je bio tzv.ASCII ili US-ASCII (američki) standard.
Kasnije je skup znakova proširen na 256 (8 bita), a „gornjih“ 128 znakova je bilo korišćeno za dodatne znakove. Iz neke navike je i ovaj prošireni ASCII nazivan ASCII, tako da tu često dolazi do zabune. Da bi postojala podrška za više jezika, smišljane su tzv.kodne strane (Code Page) koje definišu ponašanje tog dodatnog skupa slova. Osnovna kodna strana na personalnim računarima (PC437) u tom gornjem skupu definiše razne grafičke znakove za crtanje tekstualnih prozora i slično. Kasnije je razvijeno još puno kodnih strana koje podržavaju određene jezike. Tako postoje Latin1 (ISO-8859-1) za latinična pisma Zapadne Evrope (Francuska, Njemačka, Španija, ...), Latin2 (ISO-8859-2) i Windows-1250 za latinična pisma Istočne Evrope (našalatinica i sl.), ISO-8859-5, KOI8-R i Windows-1251 zaćirilicu... Osnovni problem sa kodnim stranama je to što se međusobno isključuju, tj. cijeli dokument mora da bude napisan istim pismom. To uglavnom nije problem realizovati, ali ako bi bilo potrebno pomiješati dva pisma, kao na primer u nekom turističkom vodiču gde zajedno postoji i tekst na srpskom, na engleskom i na francuskom, nailazi se na problem. Zbog toga se došlo do ideje da se napravi jedinstveni zapis za sve jezike - Unikod.
Postoji više verzija Unikoda. Osnovna verzija je dvobajtni format zapisa do 216 = 65536 znakova. Njen naziv jeUCS-2 zato što koristi dva okteta, odnosno dvabajta. Sa tih 65536 znakova riješen je problem zapisa skoro svih postojećih pisama (uključujući čak i neka izmišljena, kao na primerklingonsko pismo). Ovaj tip Unikoda se naziva Plain UCS-2 ili UTF-16.
Sada se javlja problem alokacije (dodele) prostora za Unikod-kodiranu poruku na medijumu koji se koristi. Ako je reč o nekom dokumentu na disku, on će da zauzima duplo više prostora nego konvencionalan dokument jer će se svaki znak zapisivati sa dva bajta umesto samo sa jednim. Ako je riječ o prenosu podataka preko računarske mreže, biće potrebno prenijeti duplo više podataka, pa će samim tim i prenos da traje duplo više (odnosno da košta duplo više). Postavlja se pitanje da li je to suviše velika cijena za univerzalno pismo i da li postoji neki način da se taj problem prevaziđe i izbjegne. Kao rješenje uvijek stoji mogućnost da se zapisuje nekom odgovarajućom kodnom stranicom i troši bajt po znaku, ako nije neophodno korišćenje više pisama u istom dokumentu (što se rijetko dešava). Drugo rješenje je korišćenje tzv. transformacionih šema za pogodniji zapis i prenos podataka korišćenjem Unikoda.
Prvo je razvijena Unikodtransformaciona šema sa osnovnom jedinicom od 8 bita (UTF-8). Pomoću nje se znak zapisuje u jednom, dva ili tri bajta, u zavisnosti od toga o kom je znaku reč. Ova transformaciona šema je prevashodno zgodna za upotrebu u jezicima koji koriste latinicu. O UTF-8 će biti više reči u poglavljuUkratko o UTF-8.
Jedan dioMail Transfer Agent-a, kao i zvanični standard zaelektronsku poštu (IETF:STD 11,RFC 822) podržava samo 7-bitne mail poruke.MIME standardi (RFC 2045,RFC 2046,RFC 2047,RFC 2048 iRFC 2049) omogućavaju prenos višebitnih riječi preko Internet mail-a, koristećiBase64 iQuoted Printable načine kodiranja, međutim, oni nisu pravljeni za prenos Unikoda nego za prenos bilo kakvih datoteka i nisu bili optimalna rješenja. Zbog toga je kasnije razvijena 7-bitna transformaciona šema UTF-7. Tu se znak zapisuje u jednom ili u nekoliko bajtova, slično kao i u UTF-8. Osnovna razlika je u tome što UTF-7 koristi samo Base64 kodirane znakove koji bez problema (uvek mogu da se pravilno odštampaju) mogu da se prenose putem elektronske pošte. Za takvu namenu se pokazalo da je UTF-7 bolji zapis nego UTF-8 kada se kodira sa Base64 ili sa Quoted Printable algoritmima.
Postoji i noviji Unikod standard pod nazivom UCS-4 koji koristi 4 bajta za zapis 231 = 2147483648 znakova podijeljenih u tzv. ravni. Prva dva bajta definišu ravan, tako da ima 215 = 32768 ravni. Druga dva bajta definišu znak unutar ravni, tako da ima 216 = 65536 znakova po ravni. Taj noviji format je više napravljen kao plan za budućnost nego kao realna opcija, pošto još uvijek nijedan znak nije alociran u novodobijeni prostor, odnosno svi za sada definisani znakovi (cijeli UCS-2) se nalaze u ravni 0 ili osnovnoj višejezičnoj ravni (Basic Multilingual Plane, BMP). Međutim, pošto je UCS-4 novi standard za Unikod, treba i njega imati u vidu. Da bi se UCS-4 transparentno uveo u upotrebu redefinisani su formati zapisa UTF-7, UTF-8, UTF-16 i UTF-32. To je učinjeno tako da svaki znak iz UCS-2 ima istu reprezentaciju u UTF-7 i UTF-8 kao i ranije. UTF-16 je u neku ruku sinonim za UCS-2 i sadrži više od dva bajta samo u slučaju da se kodira neki znak van „Osnovne jezičke ravni“ (BMP), koji za sada ne postoje. Za više informacija, pogledajte tabeluŠema kodiranja UCS-4 u UTF-8. UTF-32 je u stvari način zapisa UCS-4 u kome se koriste sva četiri bajta. Zbog toga što viši i niži bajt (ili dva bajta) mogu da se zapišu u memoriju na dva načina, postoje još po dvije podvarijante UTF-16 i UTF-32 koje se razlikuju po redosledu bajtova. To su UTF-16BE (big endian) i UTF-16LE (little endian) i UTF-32BE i UTF-32LE. Ovo nije uvedeno da bi se uvela dodatna zabuna i zbrka, nego zato što različite arhitekture računara različito čuvaju podatke.
Postoje dvije organizacije koje definišu dva standarda za Unikod. Jedan format je razvijen od strane tzv.The Unicode Consortium pod nazivomThe Unicode Standard. Drugi standard je razvila Međunarodna organizacija za standardizaciju -International Organization for Standardization, pod nazivom ISO/IEC 10646. Ta dva standarda su skoro identična i razlikuju se po pitanju tzv. Han unifikacije (predstavljanje japanskih, kineskih i korejskih znakova jednim jedinstvenim skupom znakova), oko dodatnih znakova za definisanje akcenata, a od skoro i u tome što Unicode Consortium nije još podržao standard UCS-4. Međutim, za našu upotrebu slobodno možemo da smatramo da su potpuno identični. Međunarodna organizacija koja definiše standarde za Internet -Internet Engineering Task Force, IETF je u svojim standardima, tzv. „zahtjevima za komentarima“ (Request for Comments, RFC), u kojima je definisano sve što postoji na Internetu, prihvatila UTF-7 (RFC 1642 iRFC 2152), UTF-8 (RFC 2044 iRFC 2279) i UTF-16 (RFC 2781), čime su oni i „zvanično“ ušli u upotrebu na Internetu, tj. svuda. U najnovijim standardima IETF je izostavio Unicode Consortium i koristi samo verziju ISO 10646, što znači da je zvanično priznata verzija ISO 10646.
UHTML jeziku za opis veb stranica se javljaju još dva načina za kodiranje Unikod znakova. Ovi načini troše mnogo više prostora nego originalni Unikod zapis i namijenjeni su za korišćenje unutar neke od kodnih stranica za ubacivanje ponekog znakova iz neke druge kodne stranice. Jedan način je zapis oktalnih vrednosti UTF-8 bajtova. Zapisuje se tako što se prvo zapiše znak &92;, pa onda oktalna vrijednost bajta. Ako taj znak u UTF-8 kodiranju sadrži više bajtova, svaki bajt se zapisuje na isti način. Tako, na primjer, znak &1060; čiji je UCS-2 kodU+0424 (U+ označava da je riječ o Unikod znaku), a UTF-8 zapis0xD0 0xA4 ima svoj HTML oktalni zapis kao\320\244, pošto je0xD0 = 0320(oktalni) = 208(decimalni) i0xA4 = 0244 = 164.
Drugi način zapisa Unikod znakova u HTML-u je putem decimalne vrijednosti njihovog UCS-2 koda. Zapisuje se tako što se prvo zapišu znakovi&#, pa onda decimalna vrijednost UCS-2 koda i na kraju znak;. Tako bi se, na primjer, gore pomenuti znak &1060; sa UCS-2 kodomU+0424 zapisao u HTML decimalnom zapisu kaoФ, pošto je0x0424 = 02044 = 1060.
Neki tekstualni uređivači takođe imaju opciju da sačuvaju tekst na više načina kodiranja. Jedan od takvih je Kate koji je sastavni deografičkog okruženjaKDE podoperativnim sistemomLinuks. On takođe može da sačuva tekst i u čistom formatu UCS-2 ili u UTF-16 (kao delu UCS-4). Za nas je bitan samo format UTF-8. Jednostavno se iz menijaPrikaz izabere podmeniPodesi kodiranje i tu se izabere željeno kodiranje, odnosno UTF-8.
NaUNIX operativnim sistemima postoji bibliotekaiconv koja vrši konverziju iz jednog u drugi način kodiranja na veoma jednostavan način. Postoji i ekvivalentan komandno-linijski (command line) program koji pretvara datoteke iz i u sve moguće načine kodiranja. Lista kodova iz kojih i u koje ova biblioteka/program može da konvertuje zauzima više od 3 pune strane i može se reći da podržava sve moguće načine kodiranja.
Da bi se koristio Unikod u pripremi dokumenata, potrebno je imati odgovarajuće fontove koji ga (barem djelimično) podržavaju. Od fontova dostupnih naWindows-u, Unikod sigurno podržavaju Arial, Times New Roman, Helvetica, Verdana i Courier New, a takođe su instalirani na svim Windows platformama, tako da bi generalno trebalo da se koristi neki od tih fontova. Fontovi tipa TimesCirilica ili YULTimes mogu da prikažu naše znakove, ali su daleko od Unikoda i u prenosu datoteke sa jednog na drugi računar u elektronskom obliku postoji velika šansa da ta datoteka neće biti lepo čitljiva na drugom računaru, tako da bi trebalo da se takvi nestandardni fontovi izbegavaju koliko god je to moguće.
Na Linuksu i ostalim UNIX-ima se u samom nazivu fonta vidi da li podržava Unikod ili ne, pošto poslednji deo naziva fonta predstavljacharacter set (skup znakova) fonta. Ako tu piše iso10646, to znači da je font kompatibilan sa Unikodom. Međutim, i ovde bih radi prenosivosti dokumenata, preporučio da se koriste standardni (Adobe-jevi) fontovi, kao što su Times (-adobe-times-*-iso10646-1), Utopia (-adobe-utopia-*-iso10646-1), Helvetica (-adobe-helvetica-*-iso10646-1), Courier (-adobe-courier-*-iso10646-1).
Svjetski trendovi razvoja baza podataka idu ka uvođenju Unikoda, kao standardni način zapisa podataka iXML-a, kao standardni jezik za prenos i prezentaciju tih podataka.
Većina baza podataka već duže vreme podržava Unikod. Dobar deo aplikacija za rad sa bazama koriste XML za prezentovanje i prenos podataka, zato što se pokazalo da je XML jednostavan jezik za programiranje, za koji već postoji punoraščlanjivača i zato što se pokazalo da je XML dovoljno fleksibilan da može da prenese bilo kakav tip podataka na sličan način. Da bi se programi međusobno „razumjeli“, razvijeni su razni standardi za opis podataka koristeći XML (kao što je, na primjer,Encoded Archival Description standard).
To uvođenje XML-a kao glavnog jezika za podršku bazama podataka je još više učvrstilo poziciju Unikoda, pošto se XML datoteke standardno pišu u UTF-8 ili UTF-16. Zanimljiva je i ta činjenica da jeMajkrosoft, koji se uglavnom protivi svim standardima i trudi se da definiše svoje, prihvatio XML i koristi ga gdje god može. Cela.NET tehnologija je zasnovana na XML-u. Zbog toga može da se očekuje da će u budućnosti biti samo više XML-a i više Unikoda i da je bitno što ranije se orijentisati ka njima.
U tabeli 2 su izlistani skoro svi znakovi koji se kod nas (u Srbiji i na prostorubivše Jugoslavije) koriste, sa svojim UCS-2 kodom, UTF-8 zapisom i sa HTML oktalnim i decimalnim zapisima (za više informacija pogledajte poglavlje 2).
Specifična ruska (gore) i pravilna srpska/makedonska (dole) slova. Ovo je primer kada sistemska, Unikod podrška nije dovoljna, pa su ondaobavezne tehnologije kao što jeOpenType i softver koji ih ima implementirane.
U Unikodusrpski imakedonski jezik, odnosno njihovaćirilička pisma, nisu tzv. „građani prvog reda”, kao što se može videti na slici desno. Pri dizajnu Unikoda početkom1990-ih godina, nije uzeto u obzir da se ćirilička pisma manje-više razlikuju u dizajnu pojedinih slova. To se ispoljava u kurzivu (iskošeno ili polupisano), ali, kao što se vidi na slici, i sa malim slovomб u osnovnom režimu. U ruskoj verziji ono veoma nalikuje broju 6, dok u srpskoj verziji to nije slučaj, osim u izuzetno malim veličinama.
Zbog veličine tržišta (Ruska Federacija i okolne zemlje iz bivšegSovjetskog Saveza, kao iBugarska), većina fontova koja sadrže ćirilicu, preferira rusku ćirilicu na standardnim mestima Unikoda, odnosno ruski dizajngrafije, pa srpski i makedonski jezik najviše trpe zbog ovoga. Iako su velika preduzeća kao što suAdobi sistems (Adobe Systems) iMajkrosoft (Microsoft) upoznata sa ovim problemom, još uvek se ne zna da li će i kada i ovi jezici postati „građani prvog reda” u sistemu Unikod.
U međuvremenu, rešenje može pružiti tehnologija kao što jeOpentajp (OpenType, naročito njeno svojstvolocl (locale)), softver koji je podržava i moderni fontovi koji sadrže ispravna srpska/makedonska slova. Dobri primeri su operativni sistemGNU/Linuks (GNU/Linux), kancelarijski paketLibreofis (LibreOffice) pod Linuksom iveb-čitačMozila Fajrfoks (Mozilla Firefox).
Evo primera za „privremeno” rešenje uveb tehnologijama. U osnovnoj verziji:
<span lang="sr">бгдпт</span> dajeбгдпт
<span lang="ru">бгдпт</span> dajeбгдпт
a polupisano ili iskošeno:
<span lang="sr">бгдпт</span> dajeбгдпт
<span lang="ru">бгдпт</span> dajeбгдпт.
Dakle, mora se koristiti atributlang="sr", i svaka veb prezentacija na srpskom jeziku treba da ima<html lang="sr"> ili<html lang="sr-RS">. Analogno ovome, i uXML i sličnim tehnologijama.Sve druge oznake, ili neoznačavanje uopšte, čini prikaz srpske ćirilice uglavnom neispravnim. Takođe, počevši odCSS-a 3, veb autori mogu da koristefont-feature-settings: 'locl';.
Naravno, moderne porodice fontova kao sto suGNUFreeFont,DejaVu,Liberation,Ubuntu ili Majkrosoftovi „C*” fontovi (Calibri, Cambria, Candara, Consolas, Constantia, Corbel) odViste pa na dalje moraju se koristiti (takođe iSitka odWindows-a 8.1). Od Adobija dobri primeri suArno Pro,Baskerville Cyrillic LT Std,Excelsior LT Std,Garamond Premier Pro,Sava Pro,Times Ten LT Std iWarnock Pro. Važno je ovde napomenuti da i kad imaju srpska/makedonska slova, neki fontovi ne podržavaju makedonski jezik samo zato što im nedostaje određena Opentajp naredba za to, koja mora da bude prisutna u samom fontu. (Dakle, makedonski jezik je još više ugrožen.)
Pored primera sa slovimaб,г,д,п,т, rusko veliko polupisanoД identično je latiničkom slovuD, što je takođe neprihvatljivo za srpski i makedonski jezik, a pomalo se razlikuje i dizajn velikih polupisanih slovaБ iН.
Dobar primer kako treba da se prati dizajn grafije da bi font bio potpuno ispravan za upotrebu u srpskom jeziku. Ovakav dizajn potvrđuje i srpska dizajnerska veb lokacija „Tipometar”.
Naposletku, otežano je i unošenje akcentovanih ćiriličkih slova, a u postojećoj bazi znakova u Unikodu nema dovoljno unapred definisanih ćiriličkih za ovu svrhu.