Unicode, UTF, WTF aneb Kdo mi sežral češtinu?
Asi už jste to někdy potkali. Člověk si píše hezky česky, někomu jinému, do e-mailu, kamsi do souboru…pak se podívá znovu a místo pěkných Husových nabodeníček vidí podivné paznaky (nebo rovnou čtverečky). Proč se to děje? Co s tím?
Upozornění: tento článek je návod pro začátečníky.
Zohyzděná češtině je ten důvod, proč nás kdysi ti oškliví počítačáři nutili psát bez hacku a carek. Věk vlády těchto ohyzdů je za námi a většinou všechno funguje, nicméně občas člověk pořád narazí na tuto dobu kamennou (o programátorech nemluvě).
Takže, proč proboha? Představte si českou abecedu, ale zkuste ji zapsat pouze pomocí čísel. Jak to uděláte?
Ne, vážně. Než začnete číst dále, jak byste to udělali?
Abeceda
Asi nejjednodušší řešení je prostě postupně očíslovat každé písmenko abecedy. Takže a = 1, b = 2, 1|2 bude znamenat ab (a 1|10|1 aja). A skutečně, podobně to funguje i v počítačích…což je problém.
Pokud jste totiž číslovali stejně jako já výše, pak 9 znamená ch. Co s tím ale mají dělat chudáci Američani? A navíc, do když 2 nebude b, ale á? A co další nabodeníčka? A co cizí nabodeníčka? A co asijské obrázky?
Na počátku byla situace jednoduchá: komunikovalo se anglicky a utrum. Latinkovou abecedu umí v daném kusu světa a koneckonců to do ní každý nějak přepíše, nebe na zemi. Jak si každý ale „čísloval svou abecedu“ podle výše uvedeného pravidla, začalo se zadělávat na problém: Čech poslal „apríl“, Angličan četl „auvnq“, srozumitelnosti nepřidávalo. Sešly se proto moudré hlavy, které daly dohromady „společnou abecedu“, která obsahuje všechny znaky ze všech abeced. Tato „abeceda“ se jmenuje Unicode (wiki), toho času ve verzi 5.1 (ano, tato tabulka se vyvíjí, protože má občas někdo tenenci přidat nějaký jazyk. Třeba egyptské hieroglyfy).
Zápis
Máme tedy očíslovanou abecedu, ale tím naše trable nekončí. Ta abeceda je totiž velká a my ji musíme být schopni nějak uložit. Každé číslo (které reprezentuje nějaké písmenko) zabírá nějaký počet míst. Zjednodušeně řečeno: buď si rezervujeme nějaký pevný počet míst, se pokusíme použít nejmenší možný. Způsob ukládání se jmenuje kódování.
První možnost je pohodlná. Ve skutečnosti totiž nejsou čísla oddělena znakem | a vědět kde jedno písmeno začíná a kde končí může být problém. Zde je to trivka: určíme, že písmeno je třeba čtveřice čísel (1|2 se tedy zapíše jako 00010002), pátá čísli je tedy vždy první číslicí druhého písmene. Problém je, že je skutečně náročné na úložný prostor, a proto se tento způsob (UTF-32) používá málo.
Druhá možnost je úspornější. Použijeme jen tolik míst, kolik je potřeba, ale musíme si poznačit, kde začíná další písmeno (ve smyslu výše používaného |). Tato komplikace se ale dá vyřešit poměrně elegantně a máme tak celkem úsporný způsob, jak si zapsat jakékoli písmeno. Podle toho, kolik „míst“ určitě použijeme se jedná o nejpopulárnější UTF-8 a nebo UTF-16.
A ještě je tu třetí možnost: budeme prostě zapisovat pouze jedno místo. Nemusíme se tak starat o přechod mezi znaky a spotřebujeme málo místa, ale pochopitelně neuložíme všechno. To je staré známe ascii, ale i české ISO-8859-2 a win1250.
A co moje čtverečky?
Z výše uvedeného už by mělo být jasné, proč se občas zobrazí podivné paznaky či obdélníčky (počítačový alias pro „Cože? A tohle je co?“).
Počítače si mezi sebou posílají dlouhá čísla a potřebují správné „brýle“ (neboli dohodnuté kódování), aby dokázaly písmenka zobrazit v pořádku. Pokud vám něco hapruje, počítač vybral špatné brýle a je potřeba mu vnutit jiné.
To uděláte kdesi hluboko v nastaveních (prohlížeče, editoru, prohlížeče videa, e-mailu…), nebo otevřením v editoru, který vás tyto brýle nechá vybrat jak při otevírání, tak při ukládání (třeba PSPad). Pro češtinu vyzkoušejte vnutit následující kódování: UTF-8, ISO-8859-2, WIN-1250 (nebo cp1250), UTF-16LE, UTF-16BE, v případě nejhorších zlotřilců KEYBCS2 áka Kód Kamenických (opravdu nechcete vědět, co je to za slizárnu).
Pár slov na konec
Pokud vám něco nesedělo a všech těch místech, vězte, že šlo o nepěkné číselné zjednodušení. Kdo ze čtenářů se neplánuje počítačům opravdu věnovat, nepotřebuje vědět nic o těch nulách a jedničkách, bitech a bajtech. Pokud vy chcete, nastudujte číselné soustavy a příslušné sekce na wikipedii.
A především – i když se UTF-8 stává v naší části světa standardem, stejně je bohužel potřeba o tomto problému vědět. Nehodí se totiž na všechno a Asie taky neřekla poslední slovo…
Published on March 8, 2010 under česky počítače začátečníci
© 2010 Almad, Web design WebJapan. Content published under CC by-nc-sa