Predstavljanje teksta

Kada je tekst u pitanju, kodiranje je relativno jednostavno – svakom simbolu, bez obzira da li je u pitanju slovo, cifra, kontrolni znak, znak interpunkcije ili bilo koji drugi znak koji se može pojaviti u tekstu, dodeljuje se odgovarajući broj.

Pored IBM standarda EBCDIC, najznačajniji standard za kodiranje teksta tokom dugog niza godina bio je ASCII (American Standard Code for Information Interchange). Standardni ASCII set sastoji se iz 128 simbola i specijalnih znakova označenih brojevima od 0 do 127. Ovo znači da se svaki znak može predstaviti nizom od 7 bitova.

Tako je u ASCII standardu definisano da se veliko slovo A zamenjuje brojem 65, razmak brojem 32, tačka brojem 33, prelazak u novi red brojem 13 (carriage return) ili kombinacijom 13 i 10 (carriage return i line feed) itd.

Pošto bi bilo praktično iskoristiti ceo bajt za beleženje simbola (svih 8 bitova), kreiran je i prošireni ASCII standard u kome je dodato još 128 znakova (posebna slova iz francuskog i nemačkog jezika, matematički i grafički simboli) i tako je nastala ASCII tabela sa 256 znakova. Svaki znak je bio zabeležen u tačno jednom bajtu. Na ovaj način bi ceo roman "Hari Poter i relikvije smrti" (kao čist tekst) zauzeo oko 1,1 MiB memorije.

Problem koji se vrlo brzo pojavio bio je nedostatak znakova iz pisama drugih svetskih jezika. Primer za to su svakako ruski i grčki jezik, a na našim prostorima je bio očigledan nedostatak srpskih latiničnih slova i ćirilice.

Prvi pokušaj rešavanja ovog problema bio je kroz kreiranje tzv. YUSCII fontova. Drugim rečima, kreirani su fontovi u kojima su pojedini znakovi osnovnog ASCII standarda zamenjivani nedostajućim slovima (npr. simbol "@" zamenjen je slovom "Ž"). Problem je bio u tome što su u tekstu ovi znaci i dalje ostajali to što jesu, bio je promenjen samo njihov izgled u različita slova. Bitno je znati da su ovi fontovi i dalje prisutni – postoji veliki broj različitih vrsta. Generalni savet je da se nikako ne koriste prilikom rada sa tekstom, već, ako je neophodno, samo u grafičkom dizajnu, unutar slike.

ASCII YUSCII ASCII YUSCII
@ Ž ` ž
[ Š { š
\ Đ | đ
] Ć } ć
^ Č ~ č
Q Љ q љ
W Њ w њ
X Џ x џ

Uporedni prikaz YUSCII znakova i ASCII karaktera čije pozicije zauzimaju

Rešenje koje se održavalo godinama i koje je bilo podržano od strane operativnog sistema bile su kodne strane. Princip se svodio na to da se znakovi iz proširenog dela ASCII standarda (znači posle 127-og znaka) zamenjuju simbolima nacionalnih pisama.

Za nas su od značaja kodne strane CP852 (latinica) i CP855 (ćirilica) pod MS-DOS operativnim sistemom, odnosno CP1250 (latinica) i CP1251 (ćirilica) pod Windows-om (CPcode page).

Pošto različiti znakovi, unutar različitih kodnih strana, imaju iste kodove (menjaju se u iste brojeve), dolazi do konfuzije u smislu koje znakove treba prikazati. Zbog toga se u nekim programima prilikom podešavanja fonta za prikaz teksta obično mora navesti i koja kodna strana se koristi (Western, Central European, Russian, Cyrilic...).

Danas su kodne strane i ASCII standard zastareli i zamenjeni novim UNICODE standardom. Ideja UNICODE-a je da se u okviru jednog standarda objedine svi znakovi nacionalnih pisama, za šta su 256 mogućih znakova ASCII standarda jednostavno suviše tesni. Tako UNICODE za zapis jednog znaka koristi dva bajta (16 bitova, što daje ukupno 216 = 65536 mogućih znakova) ili u proširenoj verziji i do 4 bajta (preciznije, unutar UNICODE verzije 5.1 standarda, rezervisano je od 00000000 do 0010FFFF, odnosno 1.114.112 pozicija za znakove a upotrebljeno je više od 100.000). Ovoliki broj znakova obuhvata svetske jezike, matematičke simbole, muzičku notaciju, drevna pisma i sl. Ipak, za sada je na računarima najviše u upotrebi 2-bajtna, odnosno osnovna multijezička verzija (BMP – Basic Multilingual Plane).[1]

Ovo je samo jedan mali deo znakova koji su sadržani u UNICODE standardu. Na slici su prikazane latinica, ćirilica, japanska katakana, runsko pismo i glagoljica.

Pored svih prednosti, standard ima i jednu očiglednu manu – sada je za zapis istog teksta potrebno više memorije nego ranije (2 ili 4 bajta za svaki znak, umesto dosadašnjeg jednog bajta). Osim toga, stariji programi i operativni sistemi mogu imati problema sa UNICODE kodiranim tekstom. Zbog toga su osmišljene različite varijante za "pakovanje" UNICODE-a, od kojih je verovatno najkorišćeniji standard za kodiranje UTF-8. Ovaj standard se zasniva na ideji da je najveći deo teksta pisan običnom engleskom latinicom, pa se ti znakovi i dalje beleže u po jednom bajtu. Zato postoje grupe kodova koje definišu kada se koriste 2, 3 ili više bajtova za zapis ostalih znakova.[2]

U sledećoj tabeli možemo videti primer kodiranja teksta "Mačka u džaku" prema nekoliko standarda (brojevi su dati u heksadecimalnom obliku).

ASC M a c k a   u   d z a k u
ASCII 4D 61 63 6B 61 20 75 20 64 7A 61 6B 75
LAT M a č k a   u   d ž a k u
CP-1250 4D 61 E8 6B 61 20 75 20 64 9E 61 6B 75
UNICODE 004D 0061 010D 006B 0061 0020 0075 0020 0064 017E 0061 006B 0075
UTF-8 4D 61 C48D 6B 61 20 75 20 64 C5BE 61 6B 75
CYR М а ч к а   у   џ а к у
UNICODE 041C 0430 0447 043A 0430 0020 0443 0020 045F 0430 043A 0443
UTF-8 D09C D0B0 D187 D0BA D0B0 20 D183 20 D19F D0B0 D0BA D183
  1. The Unicode Consortium, Unicode 5.1.0
  2. Kuhn, M., UTF-8 and Unicode FAQ for Unix/Linux
Svi elementi sajta Web'n'Study, osim onih za koje je navedeno da su u javnom vlasništvu, vlasništvo su autora i ne smeju se koristiti, u celosti ili delimično bez pismenog odobrenja autora. To uključuje tekstove, slike, ilustracije, animacije, prateći grafički materijal i programski kod.
Ovaj sajt koristi tehnologiju kolačića (cookies). Detaljnije o tome možete pročitati u tekstu o našoj politici privatnosti.