Tabulka ASCII: jak se 128 čísel stalo základem textu
ASCII, zkratka pro American Standard Code for Information Interchange, je kódování, které naučilo počítače shodnout se na tom, co je to písmeno. Bylo publikováno v roce 1963 a zdokonalováno v průběhu 60. let a mapuje každý základní znak anglického textu, číslice a hrstku řídicích signálů na čísla, která dokáže stroj uložit a přenášet. Když stisknete klávesu pro velké A, počítač neukládá tvar, ale číslo 65. ASCII je právě tou vyhledávací tabulkou, díky které toto číslo znamená A všude, kam putuje.
Standard je proslulý svou kompaktností. ASCII je 7bitový kód, což znamená, že každý znak se vejde do sedmi binárních číslic a celý repertoár zahrnuje přesně 2 na sedmou, tedy 128 samostatných kódových bodů číslovaných 0 až 127. Tato úspornost byla záměrná. Raní dálnopisy a modemy byly pomalé a drahé, takže záleželo na každém bitu. Sedm bitů stačilo na pokrytí velkých i malých písmen latinky, deseti číslic, běžné interpunkce a signalizačních znaků, které udržovaly zařízení v synchronizaci, přičemž jeden bit navíc mnoho systémů využívalo ke kontrole chyb.

Dvě poloviny: řídicí znaky a tisknutelné znaky
Tabulka se přehledně dělí na dvě oblasti. Kódy 0 až 31 a navíc kód 127 (DEL) jsou řídicí znaky. Ty na obrazovce nevytisknou žádný glyf. Místo toho instruují zařízení, aby něco udělalo: kód 9 je vodorovný tabulátor, kód 10 je posun řádku, který přesune kurzor na nový řádek, kód 13 je návrat na začátek řádku a kód 7 je zvonek, který kdysi terminál rozezněl slyšitelně. Celkem existuje třicet tři těchto signalizačních kódů, a i když je dnes mnoho z nich jen historickou kuriozitou, posun řádku, návrat na začátek řádku a tabulátor zůstávají nezbytné pro formátování textových souborů i dnes.
Kódy 32 až 126 jsou tisknutelné znaky, celkem jich je devadesát pět. Kód 32 je mezera, která se počítá jako tisknutelná, protože posouvá kurzor, i když sama nic nezobrazuje. Odtud dál přichází interpunkce a symboly, číslice 0 až 9 na kódech 48 až 57, velká písmena A až Z na kódech 65 až 90 a malá písmena a až z na kódech 97 až 122. Z tohoto uspořádání vyplývá jedna elegantní vlastnost: malá a velká verze téhož písmene se liší přesně o 32, a proto stačí překlopit jediný bit k převodu velikosti písmen. Tyto pravidelnosti nejsou náhoda, byly navrženy záměrně tak, aby řazení a převod velikosti písmen šlo provést jednoduchou aritmetikou.
Desítková, šestnáctková a dvojková soustava: tři pohledy na jedno číslo
Každý kód ASCII je jen číslo a uvidíte jej zapsané třemi způsoby. Desítková soustava je běžný zápis v základu 10, takže A je 65. Šestnáctková soustava, v základu 16, je forma, po které sahají programátoři, protože přesně odpovídá bytům: A je 0x41 a tisknutelný rozsah jde od 0x20 do 0x7E. Dvojková soustava, v základu 2, je forma, kterou hardware skutečně ukládá, takže A je 1000001 napříč svými sedmi bity. Stejný znak, tři zápisy, a schopnost se mezi nimi plynule pohybovat je klíčová dovednost při čtení výpisů paměti nebo síťového provozu. Pokud tyto převody používáte často, širší sada referenčních tabulek na speedor.net vám udrží mapování na jedno kliknutí.

Kde ASCII stále záleží
Bylo by chybou zařadit ASCII pouze mezi historii. Je živé v každodenní práci každého, kdo se dotýká kódu. Programovací jazyky zacházejí s textovými literály, zdrojovými soubory a klíčovými slovy protokolů jako s ASCII na úrovni bytů. Síťové protokoly, jako jsou HTTP hlavičky, SMTP a mnoho konfiguračních formátů, jsou definovány v ASCII, aby zůstaly čitelné pro člověka. Když řetězec vypadá poškozeně, vývojáři sáhnou po hex prohlížeči a čtou surové byty proti tabulce ASCII, aby odhalili zbloudilý řídicí znak nebo špatné zakončení řádku. Kódování URL, Base64 a únikové sekvence — to vše staví na hodnotách ASCII. Pro každého, kdo řeší chyby v kódování, promění rychlá referenční tabulka vedle vašich vývojářských nástrojů záhadný byte v jasnou odpověď.
Od ASCII k Unicode a UTF-8
ASCII skvěle zvládalo angličtinu a téměř nic jiného. Strop 128 znaků nemá místo pro znaky s diakritikou, azbuku, čínštinu, arabštinu ani emoji. Unicode na to odpověděl přidělením jedinečného čísla, nazývaného kódový bod, každému znaku v každém písmu, dnes už dobře přes sto tisíc znaků. Zásadní je, že Unicode je katalog znaků, nikoli formát pro ukládání dat, takže potřebuje kódování, které převede tyto kódové body na byty.
UTF-8 je právě takové kódování, a proto ASCII nikdy skutečně nezmizelo. UTF-8 používá jeden až čtyři byty na znak a bylo navrženo tak, aby kódové body 0 až 127, tedy celý rozsah ASCII, byly uloženy v jediném bytu totožném s prostým ASCII. Díky tomu je UTF-8 dokonale zpětně kompatibilní: jakýkoli platný soubor ASCII je zároveň platným souborem UTF-8. Znaky nad 127 využívají další byty. Tato elegantní kompatibilita je hlavním důvodem, proč dnes UTF-8 pohání naprostou většinu webu. Stručně řečeno: ASCII je původní 128znakové jádro, Unicode je univerzální katalog, který jej obsahuje, a UTF-8 je kódování, které je oba nese, přičemž text ASCII zůstává beze změny byte po bytu.
Často kladené otázky
Kolik znaků obsahuje tabulka ASCII?
Standardní ASCII definuje 128 znaků, číslovaných 0 až 127. Z toho je 95 tisknutelných znaků včetně mezery a 33 řídicích znaků, které signalizují zařízením, místo aby vytiskly glyf.
Jaký je rozdíl mezi řídicími a tisknutelnými znaky?
Řídicí znaky, kódy 0 až 31 plus 127, instruují zařízení, aby něco udělalo, například posun řádku nebo tabulátor, a nevytvářejí žádný viditelný glyf. Tisknutelné znaky, kódy 32 až 126, jsou písmena, číslice, interpunkce a mezera, které skutečně vidíte na obrazovce.
Proč je ASCII 7bitový kód?
Sedm bitů dává přesně 128 kombinací, což stačilo na pokrytí anglických písmen, číslic, interpunkce a řídicích signálů a zároveň to šetřilo přenosovou kapacitu na pomalém raném hardwaru. Osmý bit v bytu byl často vyhrazen pro paritní kontrolu chyb.
Jaký je kód ASCII pro písmeno A?
Velké A je desítkově 65, šestnáctkově 0x41 a dvojkově 1000001. Malé a je desítkově 97, což je přesně o 32 víc — vestavěný vzorec, díky kterému lze převod velikosti písmen provést jednoduchou aritmetikou.
Je ASCII totéž co Unicode?
Ne. ASCII pokrývá 128 znaků, zatímco Unicode katalogizuje přes sto tisíc znaků napříč všemi písmy. ASCII je v podstatě prvních 128 kódových bodů Unicode, takže je jen malou podmnožinou většího standardu.
Jak souvisí UTF-8 s ASCII?
UTF-8 je kódování pro Unicode, které ukládá kódové body 0 až 127 v jediném bytu totožném s ASCII. Díky tomu je každý soubor ASCII zároveň platným souborem UTF-8, a proto je UTF-8 zpětně kompatibilní a dominuje modernímu webu.
