Nahlédněte i do Diskuse pod čarou!

Přehled kódování češtiny

Přes veškerou snahu o přesnost nelze tento přehled kódování (přesněji "znakových sad") použitelných pro psaní českých textů považovat za žádný oficiální ba ani úplný přehled, veškeré připomínky či opravy jsou vítány.

Informace o Unicode hledejte zde.


Obsah (nejen této stránky)

1. Slovní popis, historie, registrované názvy znakových sad a ukázky textu

  1. ASCII (a stručný popis registrací u IANA)
  2. Grafické znázornění ukázky
  3. ISO-8859-2
  4. Bratři Kameničtí
  5. Cork
  6. CP852
  7. East8
  8. ICL
  9. KOI8-ČS
  10. Mac OS Central European
  11. Windows-1250
  12. ISO-8859-1 (znaková sada nepoužitelná pro češtinu)

2. Přesné tabulky znakových sad (na samostatných stránách)

  1. Tabulky znakových sad do Unicode (nejlepší)
  2. Tabulky dvojznaků v ASCII
  3. Tabulky k nahlédnutí přímo v HTML (externí odkaz)
    (Očekává se, že váš prohlížeč umí UTF8, jinak vám poslouží jen otisky v obrázku)

3. Obecné informace

  1. Česká abeceda a kódy češtiny
  2. Slovenská abeceda a kódy slovenštiny
  3. Tabulka anglických a českých jmen diakritických znamének
  4. Norma ČSN 36 9103 (na samostatné stránce)

4. Poděkování

5. Použité zdroje informací


US-ASCII (ASCII)

Znaková sada US-ASCII samozřejmě nesplňuje potřeby českého jazyka, protože na svých sedmi definovaných bitech kóduje pouze velká a malá nediakritická písmena latinské abecedy, číslice, další běžné grafické symboly a několik řídicích kódů (skok na nový řádek ap.). Uvádím ji na tomto místě spíše pro úplnost. Význam znakového standardu ASCII ovšem dokládá existence a činnost ASCII Konsorcia.

ASCII je výchozí znakovou sadou pro většinu znakových sad a rovněž se v ní zapisují všechny registrované názvy znakových sad. Než může být totiž jméno znakové sady použito pro označení dokumentů v internetu, musí projít řádnou registrací u IANA. Registrace obsahuje všechny používané názvy znakové sady a navíc specifikuje preferované označení v MIME, tedy název, kterým je nejvhodnější označovat např. zprávy elektronické pošty nebo HTML dokumenty.

Seznam všech registrovaných znakových sad je k dispozici na adrese ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets nebo v geograficky bližším zrcadle ve Švýcarsku.

V tomto přehledu budu příslušné registrace u IANA citovat (jsou-li znakové sady vůbec registrovány), protože u řádně registrovaných sad není pochyb o názvu, jakým je označovat. Chtěl bych přesto zdůraznit, že registrování znakových sad nemá za cíl "posvětit" každému jeho vlastní znakovou sadu, nýbrž usnadnit orientaci v zmatku, který se již vyrobil. Je v zájmu všech uživatelů internetu shodnout se na co nejmenším počtu standardů. V otázce kódování českých textů jeden takový standard existuje. Zde si můžete přečíst několik argumentů, proč se mi právě znaková sada ISO-8859-2 jeví tou ideální.

Registrace znakové sady ASCII u IANA:

Name: ANSI_X3.4-1968
Reference: RFC1345
MIBenum: 3
Source: ECMA registry
Alias: iso-ir-6
Alias: ANSI_X3.4-1986
Alias: ISO_646.irv:1991
Alias: ASCII
Alias: ISO646-US
Alias: US-ASCII (preferred MIME name)
Alias: us
Alias: IBM367
Alias: cp367
Alias: csASCII

Grafické znázornění

[Příšerně žluťoučký kůň úpěl ďábelské kódy.]

- takhle by měl vypadat alespoň některý z následujících odstavců.

ISO-8859-2 (ISO Latin 2, podle IBM i CP912)

<><><>

ISO Latin 2 je specifikováno normou ISO-8859-2 (z roku 1987), která jej doporučuje používat pro současnou albánštinu, angličtinu, češtinu, chorvatštinu, maďarštinu, němčinu, polštinu, rumunštinu, slovenštinu a slovinštinu. Je používáno na systémech Unix a dalších Příjemných systémech. (Kódová stránka s označením IBM 912 je shodná s ISO-8859-2.)

Zde je úplný přehled diakritických znaků znakové sady ISO-8859-2:

  ,^u"  , v v- , "v    ,^   /v,  ,v ,^""   ,v ,v  v  o,""    , ,v.
AAAAAABCCCCDDDEEEEEFGHIIIJKLLLLMNNNOOOOOPQRRRSSSSTTTUUUUUVWXYYZZZZ
 '       '      '                               '  '

ČSN 369103 definuje kódování KOI-8 L2, které je téměř shodné s ISO-8859-2. Toto kódování je registrováno jako ISO pod číslem 139.

Výhody použití této znakové sady pro přenos dokumentů v internetu jsou shrnuty na této stránce.

Registrace znakové sady ISO-8859-2 u IANA:

Name: ISO_8859-2:1987
Reference: RFC1345
MIBenum: 5
Source: ECMA registry
Alias: iso-ir-101
Alias: ISO_8859-2
Alias: ISO-8859-2 (preferred MIME name)
Alias: latin2
Alias: l2
Alias: csISOLatin2

Přesné složení znakové sady najdete v tabulce do Unicode nebo v tabulce dvojznaků.

Bratři Kameničtí (KEYBCS2, CP895, MJK, údajně i CP867 a dokonce CP850)

<><><>

Kódování bratrů Kamenických (též KEYBCS2) se používá na IBM kompatibilních počítačích. Je stanoveno chováním veřejně přístupného programu "KEYBCS2", jehož autory jsou právě bratři Kameničtí. Donedávna bylo nejoblíbenějším kódováním na PC vůbec, neboť zachovává veškeré grafické symboly. Mnoho tiskáren umí tisknout texty kódované v Kamenických, uživatelé FidoNETu a mnoho dalších je stále používá.

Přestože PC-L2 (852) bylo definováno dříve než MJK, bylo MJK donedávna užíváno a oblíbeno více, hlavně díky jeho vlastnostem na monitorech HGC a CGA a také díky osobní podpoře autorů pro firmy, které tehdy dodávaly počítače na náš trh (Olivetti) a které se samy otázkou češtiny vůbec nezabývaly. Poté, co IBM a Microsoft začaly hojně užívat CP852 (PC Latin 2), situace se pomalu přiblížila přijetí PC Latin 2.

Někteří z českých výrobců (např. první lokalizace FoxPro) nazývají kódování Kamenických kódovou stránkou CP895, nicméně tato stránka není specifikována ani IBM, ani Microsoftem. (Podle dopisu Jana Tomana <janto@microsoft.com> neexistuje specifikace CP895.) Některé programy podporují CP852 (PC Latin 2) i CP895 (Kameničtí).

Znaková sada bří. Kamenických není registrována u IANA, je proto problematické najít jednoznačné jméno této znakové sady.

Přesné složení znakové sady najdete v tabulce dvojznaků.

Cork (T1)

Kódování Cork (rovněž T1) používá většina evropských TUG (národní TeX Users Groups) pro TeXovské mezinárodní písmo T1. Kódování bylo definováno v roce 1990 na setkání TUG v Corku. Rodina písem TeX DC je kódována podle T1.

Toto kódování není doplňkem ASCII, neboť obsahuje tisknutelné znaky již na nejnižších pozicích (0 - 31), které ASCII používá pro řídící znaky.

Znaková sada Cork není registrována u IANA.

Přesné složení znakové sady najdete v tabulce dvojznaků.

CP852 (IBM852, PC Latin 2, PC L2)

<><><>

Kódování PC Latin 2 (zkráceně PC L2) se používá na PC. Většina současných programů pro DOS a OS/2 je podporují, neboť IBM a Microsoft ho definovali jako kódovou stránku CP852 a taktéž ČSN 36 9103 jeho používání na PC doporučuje. Toto kódování má všechny tisknutelné znaky sady ISO-8859-2 (ISO Latin 2), diakritická písmenka jsou však na jiných pozicích.

Manuály k MS DOSu pojmenovávají CP852 jako "Slavic (Latin II)", ačkoli některé z jazyků, jejichž potřeby CP852 pokrývá, se mezi slovanské jazyky neřadí (např. maďarština).

Většina českých a slovenských uživatelů zná toto kódování pouze pod názvem Latin 2 a ani netuší, jak moc se PC Latin 2 a ISO Latin 2 liší.

Registrace znakové sady CP852 u IANA; bohužel nespecifikuje preferované označení v MIME:

Name: IBM852
Reference: RFC1345
MIBenum: 2010
Source: IBM NLS RM Vol2 SE09-8002-01, March 1990
Alias: cp852
Alias: 852
Alias: csPCp852

Přesné složení znakové sady najdete v tabulce do Unicode nebo v tabulce dvojznaků.

East8

East8 používala kdysi firma HP u svých zařízení (a možná jej dosud interně používá).
Ing. Jiří Kuchta

Znaková sada East8 není registrována u IANA.

Rovněž bohužel nemám k dispozici žádné tabulky charakterizující tuto znakovou sadu.

ICL

ICL je varianta PC kódování, která měla česká písmena místo řeckých, dnes naštěstí vyhynula (ze známějších produktů to používal textový editor CSED).
Ing. Jiří Kuchta

Znaková sada ICL není registrována u IANA.

Rovněž bohužel nemám k dispozici žádné tabulky charakterizující tuto znakovou sadu.

KOI-8 ČS2 (KOI8ČS)

<><><>

Toto kódování definuje norma ČSN 36 9103. Obsahuje "ch" a "CH" v podobě zvláštních znaků (v souladu s českou abecedou) a většinu diakritických písmen lze získat pouhým nastavením osmého bitu. Toto kódování bylo používáno na starých terminálech a v současné době se zdá být mrtvé. Některé dobře známé programy (např. T602) však stále dovolují jeho používání.

Registrace u IANA; bohužel nespecifikuje preferované označení v MIME, registrované jméno je navíc nejednoznačné, neboť norma ČSN 369103 definuje celkem šest různých znakových sad:

Name: CSN_369103
Reference: RFC1345
MIBenum: 86
Source: ECMA registry
Alias: iso-ir-139
Alias: csISO139CSN369103

Přesné složení znakové sady najdete v tabulce dvojznaků.

Mac OS Central European (MacCE, CE, Mac, apple-ce, x-mac-ce...)

<><><>

Tuto znakovou sadu používá lokalizovaný Mac OS (především počítače Apple Macintosh).

Všechna písma s koncovkou CE (např. Times CE) jsou pod Mac OS v tomto kódování. (Nelze zaměňovat s písmy CE pod Windows, kde se používá striktně CP1250.) Písma pro Macintosh bez této koncovky používají kódování Mac Roman, které žádné specificky české znaky (č, ř) neobsahuje. Podrobněji lze obě znakové sady prostudovat v tabulkách do Unicode.

Znaková sada Mac OS CE není registrována u IANA, je proto problematické najít jednoznačné jméno této znakové sady.

Klub přátel počítačů Macintosh iniciuje registraci této znakové sady, ještě však není jasné, jaký by měl být její výchozí název. V úvahu přicházejí dvě varianty:

1. apple-ce
v praxi na tento název již reaguje Netscape
2. mac-ce
coby registrovaná podoba mého neoficiálního návrhu x-mac-ce

Přesné složení znakové sady najdete v tabulce do Unicode nebo v tabulce dvojznaků.

Windows-1250 (CP1250, WinCS, WinEE)

<><><>

MS Windows (3.1, WfW, W95 a NT) ve verzi CS, EE a verzích pro Maďarsko a Polsko používají kódování CP1250, které obsahuje všechny tisknutelné znaky sady ISO Latin 2, čtrnáct znaků je však na jiných pozicích (z toho osm se používá v češtině a slovenštině). Kódy v rozsahu 128 až 159 obsahují rovněž tisknutelné znaky (jedná se o oblast C1, kterou kódování ISO Latin 2 a další kódování normy ISO 2022 vyhrazují pro řídící znaky).

Není tedy pravda, že CP1250 je (jednosměrně) zaměnitelná s ISO-8859-2. (Rozdíl je patrný např. u "š")

Kuloární informace o vzniku kódování Windows-1250 naleznete na konci stránky o tom, proč používat ISO-8859-2.

Registrace znakové sady Windows-1250 u IANA; vzhledem k tomu, že definuje jediný název této znakové sady, je logicky v označování podle MIME používán výhradně tento název:

Name: windows-1250
MIBenum: 2250
Source: Microsoft  (see ../character-set-info/windows-1250) [Lazhintseva]
Alias:

Přesné složení znakové sady najdete v tabulce do Unicode nebo v tabulce dvojznaků.

ISO-8859-1

<><><>

Kódování ISO-8859-1 neobsahuje všechny potřebné české znaky, pouze některá mezinárodní písmenka mají shodný (podobný) vzhled s některými písmenky používanými i v češtině - především se jedná o dlouhé á, é ap. Této částečné podobnosti lze občas využít a napsat alespoň "cástecne" český text. Zde je úplný přehled diakritických znaků znakové sady ISO-8859-1:

 \,^~"oA    - \,^"    \,^"     ~ \,^"~/    S  \,"^    ," |
AAAAAAAEBCCDDEEEEEFGHIIIIIJKLMNNOOOOOOOPQRSSTUUUUUVWXYYYZO
          '

Mnoho programů platformy Mac OS obsahuje konverzní tabulky Mac->ISO a ISO->Mac. Tyto tabulky však vycházejí z kódování Mac Roman (známé z mezinárodních písem, obsahuje znaky jako promile ap.) a jsou plnohodnotně zvratné (žádný kód se po převodu tam a zpět nestává duplicitní, nejednoznačný). K přenosu z Maca na Maca je tedy lze tento převod bez viditelných potíží použít, přenášený dokument je však kódován částečně nesmyslně a částečně podle skutečné ISO-8859-1 (správně jsou ty znaky, které lze na Macovi napsat s nastavenou klávesnicí Czech, tj. použít výběr z českých znaků existujících i v kódování Roman a jinak užít znaků z ASCII). Nešvarem mnoha mezinárodních programů, je bezmyšlenkovité použití této tabulky na všechny textové dokumenty. Jak programy rozšířit nebo upravit, aby podporovaly nějakou rozumnější tabulku, se dozvíte v sekci Počešťování Mac OS.

Stejným problémem trpí i řada hloupějších programů pro Windows. Opět bezmyšlenkovitě použijí konverzní tabulku z nečeské znakové sady používané v mezinárodních verzích Windows do ISO-8859-1. Pokud se na takto pokažený text použije při čtení inverzní tabulka, bude text zdánlivě nepoškozen. Ve skutečnosti je však řada znaků (všechna typicky česká písmenka a další symboly) během přenosu kódována naprosto nesmyslně a nedefinovaně. Pokud by tedy taková zpráva byla přijata hloupým programem pro Mac OS z odstavce výše, budou správně zobrazeny pouze "mezinárodnější" diakritické znaky (dlouhé á, é ap.).

Pro úplnost ještě registrace znakové sady ISO-8859-1 u IANA:

Name: ISO_8859-1:1987
Reference: RFC1345
MIBenum: 4
Source: ECMA registry
Alias: iso-ir-100
Alias: ISO_8859-1
Alias: ISO-8859-1 (preferred MIME name)
Alias: latin1
Alias: l1
Alias: IBM819
Alias: CP819
Alias: csISOLatin1

Přesné složení znakové sady najdete v tabulce do Unicode.


Několik obecných informací na závěr

Česká abeceda

a   a'  b   c   c<  d   d<  e   e'  e< 
f   g   h   ch  i   i'  j   k   l   m 
n   n<  o   o'  p   q   r   r<  s   s< 
t   t<  u   u'  u0  v   w   x   y   y' 
z   z<

Spřežka "ch" je považována za jedno písmeno.

České znaky "r<", "e<" a "u0" se ve slovenštině nepoužívají.

Kód českého jazyka je podle ISO 639 "cs". Dvoupísmenný kód České republiky je podle normy ISO 3166 "CZ". (Povšimněte si, že podle konvence norem ISO 639 a ISO 3166 jsou kódy jazyků psány malými a kódy států velkými písmeny.)

Slovenská abeceda

a   a'  a:  b   c   c<  d   d<  dz  dz<
e   e'  f   g   h   ch  i   i'  j   k
l   l'  l<  m   n   n<  o   o'  o>  p
q   r   r'  s   s<  t   t<  u   u'  v
w   x   y   y'  z   z<

Spřežky "ch", "dz" a "dz<" jsou považovány za samostatná písmena.

Slovenské znaky "a:", "o>", "r'", "l'" a "l<" se v češtině nepoužívají.

Kód slovenského jazyka je podle ISO 639 "sk". Dvoupísmenný kód Slovenska je podle normy ISO 3166 "SK".

Tabulka anglických a českých jmen diakritických znamének používaných v ISO Latin 2 a KOI-8 L2

English name            Czech Name (CSN 36 9103)
----------------------------------------------------------------------
acute accent .........  carka nad pismenem, silny prizvuk
                        (c<A'RKA nad pi'smenem, silny' pr<i'zvuk)
breve ................  breve
caron ................  hacek                  (ha'c<ek)
cedilla ..............  hacek pod pismenem, cedilie 
                        (ha'c<ek pod pi'smenem, cedilie)
circumflex accent ....  vokan                  (voka'n<)
diaeresis ............  dve tecky nad pismenem, prehlaska
                        (dve< tec<ky nad pi'smenem, pr<ehla'ska)
dot above ............  tecka nad pismenem     (tec<ka nad pi'smenem)
double acute accent ..  dvojcarka              (dvojc<a'rka)
ogonek ...............  ocasek                 (oca'sek)
ring above ...........  krouzek nad pismenem   (krouz<ek nad pi'smenem)
stroke ...............  preskrtnuti            (pres<krtnuti')
[Chybí: jména slovenských znamének]

Poděkování

Tento přehled kódování používaných pro zápis českých textů vznikl sloučením mé původní stránky s obsahem cs-encodings-faq Lukáše Petrlíka, kterému tímto děkuji za velmi cenné informace (dvojznakové tabulky znakových sad a podrobný popis kódování Kamenických (CP 859), CP 852 (PC Latin 2), ISO Latin 2, KOI-8 CS2,CP1250 (MS Windows CS a EE) a Cork).

Rovněž bych chtěl poděkovat Ing. Jiřímu Kuchtovi za stručné informace ke kódování East8 a ICL.

Ondřej Bojar

Použité zdroje

cs-encodings-faq Lukáše Petrlíka.

ČSN 36 9103. Information processing: 8-bit code for information interchange. Vydavatelství norem Praha, 1989.

Gašpaříková, Z. - Kamis, A.: Slovensko-český slovník. SPN Praha 1987.

IBM: IBM OS/2 Warp 4. Klavesnice a kodove stranky. (Keyboards and Code Pages.) IBM, 1996.

D. E. Knuth: The TeXbook. Addison Wesley, Reading, Massachusetts, 1986.

Lamport, L.: LaTeX. Addison - Wesley, Reading, Massachusetts, 1986.

List of IANA Registered Character Sets.

RFC 1345. Character Mnemonics & Character Sets. [Tabulky pro ISO Latin 2, PC Latin 2 a KOI-8 L2 (CSN_369103).]

The cp1250_WinLatin2 to Unicode table, 2.00.

The MacOS_CentralEurope to Unicode table, 0.2. [Tato tabulka obsahuje i slovní popis kódu.]