Krátka história kódovania znakov

Zrejme nikoho neprekvapí, že spočiatku počítače a ich operačné systémy používali len základnú sadu znakov bez diakritiky. Táto sada je definovaná v norme ASCII (American Standard Code for Information Interchange) a definuje kódy pre 128 znakov - teda presne polovicu počtu, ktorý sa zmestí do jedného bajtu. Zvyšok bol voľný a spočiatky sa využíval viac-menej náhodne, napr. pre grafické znaky (Norton commander, NC). U nás trochu neskôr vznikol tzv. kód Kamenických, ktorý túto sadu doplnil tak, aby pri zachovaní grafiky pre NC bolo možné zobrazovať aj našu (českú a slovenskú) diakritiku. [h2]Normalizácia v 8 bitoch[/h2] Ak si majú viacerí používatelia navzájom vymieňať údaje, musia sa dohodnúť na ich formáte - tak vznikajú normy. Milou vlastnosťou noriem je, že ich býva viac a že sú navzájom nekompatibilné. Oblasť kódovania znakov je vynikajúcim príkladom. Pre 8-bitové znaky a slovenčinu (či presnejšie: stredoeurópske jazyky) sa bežne používajú dve normy. Jedna z nich v prostredí OS Windows - CP1250, druhá je normou Medzinárodnej organizácie pre normalizáciu - ISO-8859-2. Obdobné normy sú definované aj pre ostatné jazyky s hláskovou abecedou - ISO-8859-1 pre západoeurópske jazyky, ISO-8859-7 pre gréčtinu a tak podobne ďalej. Pre správne zobrazenie textu samozrejme musíme jeho kódovanie vopred poznať, čo je dôležité najmä v prostredí Internetu. Preto každý HTML dokument má svoje kódovanie uvedené v hlavičke: [code] [/code] Poznámka: Ak sa stránka nezobrazí správne a uvedený alebo podobný riadok na nej nenájdete (vo Firefoxe si možno pozrieť kód stránky stlačením CTRL-U), je to jednoznačne chyba autora stránky. Napíšte mu e-mail s upozornením. [h2]Ako zmeniť kódovanie textového súboru[/h2] Ak poznáme aktuálny kód súboru, môžme ho ľahko zmeniť pomocou programu recode. Napríklad pre zmenu z cp1250 na ISO-8859-2 (známy tiež ako latin2) na príkazovom riadku zadáme [code] recode cp1250..latin2 subor.txt [/code] Aj je to. Po vykonaní je subor.txt uz v novom kodovani. [h2]Unicode[/h2] 8-bitové kódy majú dva závažné nedostatky: [list] [*]Pre mnohé jazyky neposkytujú dostatočný priestor (čínština) [*]Neumožňujú kombinovať rôzne písma v jednom súbore (stále hovoríme o textových súboroch, napr. HTML stránkach. Pre dokumenty pre OpenOffice a iné podobné systémy toto obmedzenie neplatí) [/list] Norma [url=http:en.wikipedia.org/wiki/Unicode]UNICODE[/url] tieto nedostatky odstraňuje. Namiesto špeciálneho kódovania pre jednotlivé jazyky zavádza jedno kódovanie pre všetky. Samozrejme, že to nejde pomocou reprezentácia jedným bytom (8 bitov), unikód ich používa štyri, čo je priestor pre milióny rôznych znakov - to bezpochyby stačí pre pre všetky dnešné, ale aj budúce abecedy. Ale aby to zase nebolo také jednoduché aj UNICODE existuje vo viacerých formách [list] [*] UTF-16(Unicode Transformation Format) používa podľa potreby 1 alebo 2 byty a je štandardom pre Windows API a Javu [*] UTF-8 používa podľa potreby 1, 2 alebo 4 byty, pričom jednobajtové znaky (kód 0-127) sa zhodujú s kódovaním ASCII. Je to najekonomickejšie riešenie a je preferovaným kódovaním pre Internet a pre novšie distribúcie Linuxu (staršie používali ISO-8859-2) [/list] [h2]Krátka ukážka[/h2] Vďaka unikódu je dnes písanie v rôznych písmach a jazykoch a ich vzájomné kombinovanie jednoduché. Stačí si nainštalovať podporu pre danú klávesnicu a možno hneď písať [list] [*]Slovenčina: ďťňľ [*]Ruština: йцукенгш [*]Hebrejčina: 'שדגכעידאט (píše to odzadu!) [*]Arabčina: ضصثقفغ (aj tu) [*]Arménčina: ճփբսմուկըթ [/list] [h1]Vzájomná kompatibilita[/h1] Na úrovni [i]textových súborov[/i] o možno o kompatibilite asi sotva hovoriť. Treba poznať ich kódovanie a v prípade potreby použiť recode na jeho zmenu. Inde by s kompatibilitou nemali byť žiadne problémy. Aplikácie ako OpenOffice či Firefox poznajú kódovanie editovaného dokumentu, rovnako ako aj kódovanie lokálneho počítača - takže prenositeľnosť je zaručená, rovnako ako medzi rôznymi linuxovskými systémami, tak aj smerom k Windows.