Co je co

Jaké jsou kódy znaků základní abecedy a jaké jsou nejběžnější a univerzální řídící povely? To vše najdeme v tabulce ASCII (American Standard Code for Information Interchange = americký standardní kód pro výměnu informací).

Aby bylo možné v digitálních zařízeních nějak vyjádřit, uchovávat a zpracovávat text, bylo nutné zavést způsob kódování jednotlivých znaků a pokud možno dosáhnout stavu, aby všichni uznávali jeden jediný univerzální způsob kódování. Podařilo se to částečně. Základem drtivé většiny dnes používaných tabulek pro kódování znaků je kód ASCII v podobě z roku 1967, který využíval 7 bitů a dovoloval tedy rozlišit 128 znaků. Tato „základní“ a jednotící tabulka obsahuje na prvních 32 místech řídící znaky pro komunikaci, pak následují speciální znaky (! : # $ ….), pak číslice a znaménka a od 65. pozice velká písmena mezinárodní (anglické) abecedy a po nich písmena malá. Poslední znak, 128. v pořadí, je opět znakem řídícím a znamená DEL čili delete – smazání znaku.

ascii

Tabulka ASCII – zdroj Wikipedie

Tato tabulka těžko mohla uspokojit ty, jejichž jazyk vyžaduje nějaké další znaky, čeština je ostatně na podobné „nestandardní“ znaky velmi bohatá. Z toho důvodu se nad základních 128 kódů doplňuje dalších 128 kódů, které se ještě vejdou do jednoho bytu, a v nich jsou obsaženy právě národní znaky nebo třeba v matematice často používané znaky řecké abecedy, jiné matematické symboly a semigrafika (části rámečků). V této nástavbě se ale už často různé kódy, které najdeme třeba v paměti LCD displejů, liší.

Řídící znaky byly navrženy původně tak, aby vyhovovaly pro komunikaci dálnopisem, v současné době se z nich běžně používá jen malá část:

  • SPC (20H)  – může se brát jako řídící znak (vynechání znaku) nebo prostě jako znak mezera
  • HT (09H) – tabulátor, přeskok na další předdefinovanou pozici vpravo od pozice kurzoru, často s pořadím dělitelným číslem 6 nebo 8 (*)
  • CR (0DH) – původní význam je carriage return = návrat vozíku, znamená přesun na první znak v řádku
  • LF (0AH) – odřádkování, v užším významu posun o řádek níž při zachování pozice na řádku (**)
  • FF (0CH) – přechod na další stránku, na displeji často vymazání obsahu a nastavení kurzoru vlevo nahoru
  • BS (08H) – přesun o jeden znak vlevo
  • DEL (7FH) – smazání znaku vlevo od kurzoru a přesun kurzoru o jeden znak vlevo
  • NULL (00H) – znak, který nic nedělá, může být použit pro udržování nebo prověření komunikace

* je třeba neplést si dvě podobná slova, TABULÁTOR slouží k odsazení textu a vytváření tabulek a běžně ho používáme, TABELÁTOR je účtovací nebo třídící stroj, typicky třeba stoj na snímání děrných štítků, s tím se asi setkáte v muzeu

** nejčastěji je třeba současně ukončit řádek a přejít na začátek dalšího. Některé systémy vyžadují oba znaky (CR + LF), některým stačí jen CR a některým jen LF

 

Příklad „horní“ nebo také „rozšířené“ části tabulky znaků je na dalším obrázku, v tomto případě jde o českou verzi vytvořenou bratry Kamenickými a používanou velmi často od 80. let až přes přelom století. Znak NBSP je nedělitelná mezera.

05_kamen

Tabulka rozšíření ASCII pro znakovou sadu Kamenických


 

Pokud chcete, aby program byl co nejlépe přenositelný a použitelný pro různé typy znakových displejů a terminálů, je nutné používat jen základní ASCII, rozšířená tabulka znaků pro konkrétní zařízení naopak dovolí vytvořit podstatně lepší vzhled za cenu možné nekompatibility.

Chcete-li si vyzkoušet, jak dané zařízení zvládá češtinu i s jejími úskalími, zkuste na něj poslat k zobrazení třeba následující kdysi populární testovací text: „Příšerně žluťoučký kůň úpěl ďábelské ódy.“ Možná budete překvapeni, co uvidíte.