Kódování češtiny

Kódování češtiny je libovolná reprezentace nějaké znakové sady, která obsahuje všechna písmena, číslice a další znaky používané v českých textech, číselným kódem.

Čeština používá tolik znaků s diakritikou, že je pro ni prakticky nemožné vytvořit sedmibitové kódování založené na ASCII. ČSN 36 9103[1] vydaná v roce 1979 definovala 8bitový kódovaný soubor symbolů KOI-8čs pro češtinu a slovenštinu vycházející z mezinárodní normy ISO/IEC 646, která je založena na ASCII. Kódování primárně navržené pro sálové počítače řady JSEP bylo použito i v české lokalizaci operačního systému CP/M, jako kódování používané mikropočítačem SAPI-1 a v textovém procesoru Text602, ale v praxi se příliš nerozšířilo.

Většího rozšíření dosáhly kódové sady vyvinuté firmami IBM, Microsoft a Apple, které ve snaze o minimalizaci počtu kódování ve svých operačních systémech vytvořily osmibitová kódování pro své operační systémy PC-DOS (MS-DOS), Windows a MacOS vždy pro celou skupinu východoevropských jazyků psaných latinkou. V rámci ISO/IEC 8859 bylo pro uvedené jazyky vytvořeno kódování ISO 8859-2, které se dočkalo uplatnění především na unixových operačních systémech. Kvůli značné těžkopádnosti používání kódových stránek v operačním systému MS-DOS bylo na počítačích kompatibilních s IBM PC velmi oblíbené kódování bratří Kamenických, nazývané také KEYBCS2.

Okolo roku 1990 tak existovalo nejméně 6 různých osmibitových kódování pro češtinu. Neexistence jednotného kódování přinášela problémy s kompatibilitou a přenositelností textů, které zintenzívněly s nástupem elektronické pošty a internetových služeb, především WWW, a které mizejí teprve s přechodem na jednotné kódování ISO 10646/Unicode.

Osmibitová kódování češtiny

Kódování češtiny na počítačích se musí vypořádat s faktem, že čeština s výjimkou spřežkového zápisu písmene ch používá diakritický pravopis a základní latinskou abecedu rozšiřuje o 15 malých a 15 velkých písmen s diakritikou (á, č, ď, é, ě, í, ň, ó, ř, š, ť, ú, ů, ý, ž, Á, Č, Ď, É, Ě, Í, Ň, Ó, Ř, Š, Ť, Ú, Ů, Ý, Ž), což znemožňuje vytvoření sedmibitového kódování založeného na kódování ASCII. V době vytváření sedmi a osmibitových kódování existoval společný česko-slovenský stát, proto bylo žádoucí vytvořit společnou znakovou sadu pro češtinu a slovenštinu. Pro zápis slovenštiny se používá abeceda rozšířená o 17 malých a 17 velkých písmen s diakritikou a složená písmena dz, a ch. Spolu se 2 malými a 2 velkými německými písmeny (ö, ü, Ö, Ü), která se často používají pro zápis německých jmen, to představuje rozšíření abecedy o 22 malých a 22 velkých písmen. Dohromady je použito 96 písmen, což je více než počet tisknutelných znaků v kódování ASCII. KOI-8čs navíc obsahuje ještě francouzské à, À.

Převážná většina kódování znaků vychází z kódu ASCII. Normy Mezinárodní organizace pro normalizaci ISO/IEC 646, Mezinárodního poradního sboru pro telefon a telegraf T.50 a Ecma International ECMA-6 popisují pravidla pro vytváření sedmibitových národních kódování na bázi kódu ASCII. Podle těchto pravidel lze některé v textech málo používané speciální znaky nahradit národními znaky a tak rozšířit základní latinskou abecedu nejvýše o 10 písmen. Kromě toho je možné několik speciálních znaků nahradit speciálními znaky používanými v příslušném jazyce. Toto řešení neposkytuje dostatek znaků potřebných pro češtinu. V jazycích, které tolik znaků nepotřebují (např. němčina), je sice vhodné pro běžné texty, ale kvůli nahrazení speciálních znaků (především hranatých a složených závorek, svislé čáry a zpětného lomítka) znaky s diakritikou mění zápis programů v nesrozumitelnou změť znaků. Řada programovacích jazyků umožňuje nahradit chybějící znaky posloupnostmi běžnějších znaků, vhodnějším řešením je používání osmibitových kódování, které přebírají prvních 128 kódů z ASCII, nebo používání Unicode.

Pro češtinu a se používala celá řada osmibitových kódování; většího rozšíření dosáhla následující:

kódováníkomentář
ISO 8859-2 (ISO Latin 2)Standard ISO používaný pouze v unixových operačních systémech, v elektronické poště a v menší míře na WWW.
Windows-1250Kód používaný firmou Microsoft v operačních systémech Windows pro kódování středoevropských jazyků (i ve Windows 7 a 8).
CP852 (PC Latin2)Kód vytvořený firmou IBM používaný např. v operačním systému DOS.
Mac CEKód používaný firmou Apple pro středoevropské jazyky v operačním systému MacOS.
Kód KamenickýchOblíbené neoficiální kódování používané v DOSu pro potřeby češtiny a slovenštiny.
KOI8-ČSNejstarší kódování češtiny a slovenštiny definované československou státní normou ČSN 36 9103 pro řadu počítačů JSEP.
Kódování CorkKódování fontů používané programem TeX.

Nedostatkem kódování KOI-8čs byla jeho použitelnost pouze pro češtinu a slovenštinu. Kódování ISO 8859-2 ISO mělo teoreticky před nástupem Unicode představovat preferované kódování pro jazyky střední a východní Evropy. Protože převládající operační systémy používaly jiná kódování (MS-DOS kódovou stránku CP852, Windows kódování Windows-1250 a MacOS kódování Mac CE), bylo ISO 8859-2 v praxi používáno pouze v unixových operačních systémech, v elektronické poště a v menší míře na WWW.

Kódování Windows-1250 (někdy označované též CP1250) se v několika znacích liší od ISO 8859-2; naneštěstí pro češtinu se jedná o často používané znaky Š, š, Ž, ž a znaky Ť, ť a slovenské Ľ a ľ. Kódování CP-852 používané primárně v DOSu využívají dodnes česká Windows při zadávání speciálních znaků pomocí alt-kódů. Pokud se například po stisknutí klávesy Alt na numerické klávesnici vyťuká číslo 248 a pak se klávesa Alt pustí, objeví se na obrazovce znak ° pro stupeň, který má v tabulce znaků kód 248 (hexadecimálně F8).

Kód Kamenických (též KEYBCS2) je neoficiální kódování používané v DOSu pro potřeby češtiny a slovenštiny. Rozšířilo se díky ovladači klávesnice a programu pro nastavení znaků na adaptérech EGA a VGA, které dodávalo JZD Slušovice s počítači PC, a také díky tomu, že zachovávalo všechny semigrafické znaky, které se používaly pro vytváření rámečků a tabulek v textových režimech. Navíc na počítačích, jejichž videoadaptéry neumožňovaly změnu znakové sady, se při použití tohoto kódování místo chybějících českých znaků zobrazovaly tvarově podobné znaky.

Kódy českých a slovenských znaků

Následující tabulka shrnuje kódy českých a slovenských znaků s diakritikou v různých standardech:

KódováníISO8859-2Windows-1250CP852KamenickýchMac CECorkUTF-8UTF-16 BE
Znakdechexdechexdechexdechexdechexdechexdechexdechex
Á193C1193C1181B51438F231E7193C1195 129C3 A10 19300 C1
Ä196C4196C41428E1428E12880196C4195 132C3 840 19600 C4
Č200C8200C8172AC128801378913183196 140C4 8C1 1201 0C
Ď207CF207CF210D2133851459113284196 142C4 8E1 1401 0E
É201C9201C9144901449013183201C9195 137C3 A90 20100 C9
Ě204CC204CC183B7137891579D13385196 154C4 9A1 2601 1A
Í205CD205CD214D61398B234EA205CD195 141C3 8D0 20500 CD
Ĺ197C5197C5145911388A189BD13688196 185C4 B91 5701 39
Ľ165A5188BC149951569C187BB13789196 189C4 BD1 6101 3D
Ň210D2210D2213D5165A5197C51408C197 135C5 871 7101 47
Ó211D3211D3224E014995238EE211D3195 147C3 930 21100 D3
Ô212D4212D4226E2167A7239EF212D4195 148C3 940 21200 D4
Ö214D6214D6153991539913385214D6195 150C3 960 21400 D6
Ŕ192C0192C0232E8171AB217D9143CF197 148C5 941 8401 54
Ř216D8216D8252FC1589E219DB193C1197 152C5 981 8801 58
Š169A91388A230E61559B225E114592197 160C5 A01 9601 60
Ť171AB1418D1559B13486232E814794197 164C5 A41 10001 64
Ú218DA218DA233E915197242F2218DA195 154C3 9A0 21800 DA
Ů217D9217D9222DE166A6241F115197197 174C5 AE1 11001 6E
Ü220DC220DC1549A1549A13486220DC195 156C3 9C0 22000 DC
Ý221DD221DD237ED1579D248F8221DD195 157C3 9D0 22100 DD
Ž174AE1428E166A614692235EB1549A197 189C5 BD1 12501 7D
á225E1225E1160A0160A013587225E1195 161C3 A10 22500 E1
ä228E4228E413284132841388A228E4195 164C3 A40 22800 E4
č232E8232E81599F135871398B163A3196 141C4 8D1 1301 0D
ď239EF239EF212D41318314793165A5196 143C4 8F1 1501 0F
é233E9233E913082130821428E233E9195 169C3 A90 23300 E9
ě236EC236EC216D8136881589E165A5196 155C4 9B1 2701 1B
í237ED237ED161A1161A114692237ED195 173C3 AD0 23700 ED
ĺ229E5229E5146921418D190BE168A8196 186C4 BA1 5801 3A
ľ181B5190BE150961408C188BC169A9196 190C4 BE1 6201 3E
ň242F2242F2229E5164A4203CB172AC197 136C5 881 7201 48
ó243F3243F3162A2162A215197243F3195 179C3 B30 24300 F3
ô244F4244F4147931479315399244F4195 180C3 B40 24400 F4
ö246F6246F614894148941549A246F6195 182C3 B60 24600 F6
ŕ224E0224E0234EA170AA218DA175AF197 149C5 951 8501 55
ř248F8248F8253FD169A9222DE176B0197 153C5 991 8901 59
š185B91549A231E7168A8228E4178B2197 161C5 A11 9701 61
ť187BB1579D1569C1599F233E9180B4197 165C5 A51 10101 65
ú250FA250FA163A3163A31569C250FA195 186C3 BA0 25000 FA
ů249F9249F91338515096243F3183B7197 175C5 AF1 11101 6F
ü252FC252FC12981129811599F252FC195 188C3 BC0 25200 FC
ý253FD253FD236EC15298249F9253FD195 189C3 BD0 25300 FD
ž190BE1589E167A714591236EC186BA197 190C5 BE1 12601 7E

Odkazy

Reference

  1. ČSN 36 9103. Systémy zpracování informací. 8bitové kódované soubory symbolů. 3. prosince 1979.

Související články

Externí odkazy