ASCII
ASCII je anglická zkratka pro American Standard Code for Information Interchange („americký standardní kód pro výměnu informací“). V podstatě jde o kódovou tabulku, která definuje znaky anglické abecedy a jiné znaky používané v informatice. Jde o historicky nejúspěšnější znakovou sadu, ze které vychází většina současných standardů pro kódování textu přinejmenším v euro-americké zóně.
Tabulka obsahuje tisknutelné znaky: písmena, číslice, jiné znaky (závorky, matematické znaky (+ - * / % atd.), interpunkční znaménka (, . : ; atd.), speciální znaky (@ $ ~ atd.)), a řídicí (netisknutelné) kódy, které byly původně určeny pro řízení periferních zařízení (např. tiskárny nebo dálnopisu).
Kód ASCII je podle původní definice sedmibitový, obsahuje tedy 128 platných znaků. Pro potřeby dalších jazyků a pro rozšíření znakové sady se používají osmibitová rozšíření ASCII kódu, která obsahují dalších 128 kódů. Takto rozšířený kód je přesto příliš malý na to, aby pojal třeba jen evropské národní abecedy - pro reprezentaci takových znaků se v současnosti používá Unicode kódování - historicky však pro potřeby jednotlivých jazyků byly vytvořeny různé kódové tabulky, kde však význam kódů nad 127 nebyl jednoznačný. Systém kódových tabulek pro národní abecedy (stejně tak jako Unicode) spravuje například organizace ISO.
Tabulka ASCII kódů
V první tabulce (kódy 0h až 1Fh) jsou řídicí kódy, speciální netisknutelné znaky, sloužící k řízení datového přenosu, k formátování tisku, případně k jiným účelům (např. escape se používal pro sekvence sloužící ke konfiguraci tiskárny). V druhé, třetí a čtvrté tabulce jsou běžné tisknutelné znaky.
Výjimkou je znak mezera na začátku druhé tabulky (decimální kód 32, hexadecimální 20h, zkratka SP) který může být počítán jak k řídicím, tak k tisknutelným znakům a řídicí znak DEL (decimální kód 127, hexadecimální 7Fh) na konci poslední tabulky. Tip: Tyto ASCII kódy se dají napsat v české klávesnici.
Dec | Hex | Zkratka (anglicky) | Význam (anglicky) |
---|---|---|---|
0 | 00 | NUL | NULL character |
1 | 01 | SOH | Start of Header |
2 | 02 | STX | Start of Text |
3 | 03 | ETX | End of Text |
4 | 04 | EOT | End of Transmission |
5 | 05 | ENQ | Enquiry |
6 | 06 | ACK | Acknowledge |
7 | 07 | BEL | Bell |
8 | 08 | BS | Backspace |
9 | 09 | HT | Horizontal Tab |
10 | 0a | LF | Line feed |
11 | 0b | VT | Vertical Tab |
12 | 0c | FF | Form Feed |
13 | 0d | CR | Carriage return |
14 | 0e | SO | Shift Out |
15 | 0f | SI | Shift In |
16 | 10 | DLE | Data Link Escape |
17 | 11 | DC1 | Device Control (XOn) |
18 | 12 | DC2 | Device Control |
19 | 13 | DC3 | Device Control (XOff) |
20 | 14 | DC4 | Device Control |
21 | 15 | NAK | Negative Acknowledge |
22 | 16 | SYN | Synchronous Idle |
23 | 17 | ETB | End of Transmission Block |
24 | 18 | CAN | Cancel |
25 | 19 | EM | End of Medium |
26 | 1a | SUB | Substitute |
27 | 1b | ESC | Escape |
28 | 1c | FS | File Separator |
29 | 1d | GS | Group Separator |
30 | 1e | RS | Record Separator |
31 | 1f | US | Unit Separator |
Dec | Hex | Znak |
---|---|---|
32 | 20 | SP (mezera) |
33 | 21 | ! |
34 | 22 | " |
35 | 23 | # |
36 | 24 | $ |
37 | 25 | % |
38 | 26 | & |
39 | 27 | ' |
40 | 28 | ( |
41 | 29 | ) |
42 | 2a | * |
43 | 2b | + |
44 | 2c | , |
45 | 2d | - |
46 | 2e | . |
47 | 2f | / |
48 | 30 | 0 |
49 | 31 | 1 |
50 | 32 | 2 |
51 | 33 | 3 |
52 | 34 | 4 |
53 | 35 | 5 |
54 | 36 | 6 |
55 | 37 | 7 |
56 | 38 | 8 |
57 | 39 | 9 |
58 | 3a | : |
59 | 3b | ; |
60 | 3c | < |
61 | 3d | = |
62 | 3e | > |
63 | 3f | ? |
Dec | Hex | Znak |
---|---|---|
64 | 40 | @ |
65 | 41 | A |
66 | 42 | B |
67 | 43 | C |
68 | 44 | D |
69 | 45 | E |
70 | 46 | F |
71 | 47 | G |
72 | 48 | H |
73 | 49 | I |
74 | 4a | J |
75 | 4b | K |
76 | 4c | L |
77 | 4d | M |
78 | 4e | N |
79 | 4f | O |
80 | 50 | P |
81 | 51 | Q |
82 | 52 | R |
83 | 53 | S |
84 | 54 | T |
85 | 55 | U |
86 | 56 | V |
87 | 57 | W |
88 | 58 | X |
89 | 59 | Y |
90 | 5a | Z |
91 | 5b | [ |
92 | 5c | \ |
93 | 5d | ] |
94 | 5e | ^ |
95 | 5f | _ |
Dec | Hex | Znak |
---|---|---|
96 | 60 | ` |
97 | 61 | a |
98 | 62 | b |
99 | 63 | c |
100 | 64 | d |
101 | 65 | e |
102 | 66 | f |
103 | 67 | g |
104 | 68 | h |
105 | 69 | i |
106 | 6a | j |
107 | 6b | k |
108 | 6c | l |
109 | 6d | m |
110 | 6e | n |
111 | 6f | o |
112 | 70 | p |
113 | 71 | q |
114 | 72 | r |
115 | 73 | s |
116 | 74 | t |
117 | 75 | u |
118 | 76 | v |
119 | 77 | w |
120 | 78 | x |
121 | 79 | y |
122 | 7a | z |
123 | 7b | { |
124 | 7c | | |
125 | 7d | } |
126 | 7e | ~ |
127 | 7f | DEL (delete) |
Popis speciálních a řídicích znaků
Tyto neviditelné znaky byly určeny pro řízení dálnopisu nebo tiskárny, ale v současnosti se z nich využívá jen poměrně malá část. Nejčastěji používané speciální znaky jsou:
- SPC – space, mezera, „prázdný znak“
- HT – Horizontal Tab – tabulátor
- LF – Line Feed – odřádkování
- CR – Carriage Return – návrat vozíku
Ani pro používání těchto kódů neexistuje všeobecně přijímaný standard. Například unixové operační systémy včetně Linux a Apple Mac OS X používají pro odřádkování kód LF, systémy DOS a Windows používají kombinaci CR+LF, Apple systémy z období před Mac OS X používají kód CR. (viz Nový řádek)
Ostatní speciální znaky se používají například pro definici komunikačních protokolů při komunikaci mezi počítači. Zde je význam speciálních znaků podle původního standardu.
Fyzické ovládání zařízení
- BS: Backspace (návrat o 1 znak zpět)
- HT: Horizontal Tab (tabulátor)
- LF: Line Feed (posun o 1 řádek dolů)
- VT: Vertical Tab (vertikální tabulátor)
- FF: Form Feed (posun na další stránku)
- CR: Carriage Return (návrat tiskové hlavičky na začátek)
Fyzické ovládání zařízení: ostatní
- BEL: Bell – zvonek
- DC1, DC2, DC3, DC4: Device Controls – DC1 a DC3 se používají jako XON and XOFF v softwarovém handshakingu
Logické řízení komunikace
- SOH: Start of Header – začátek hlavičky
- STX: Start of Text – začátek textu
- ETX: End of Text – konec textu
- EOT: End of Transmission – konec vysílání
- ENQ: Enquiry – dotaz (žádost o komunikaci)
- ACK: Acknowledge – potvrzení (připravenosti ke komunikaci)
- DLE: Data Link Escape – používá se pro kódování speciálních znaků
- NAK: Negative Acknowledge – zamítnutí (žádosti o komunikaci)
- SYN: Synchronous Idle
- ETB: End of Transmission Block – konec přenosového bloku
Fyzické řízení komunikace
- NUL: Null – „nic“
- DEL: Delete – smazání
- CAN: Cancel – zrušení
- EM: End of Medium – konec média
- SUB: Substitute – substituce
Oddělovače informací
- FS: File Separator – oddělovač souboru
- GS: Group Separator – oddělovač skupiny
- RS: Record Separator – oddělovač záznamu
- US: Unit Separator – oddělovač jednotek
Rozšiřování kódu
- SI: Shift In
- SO: Shift Out
- ESC: Escape
Odvozená kódování
První verze znakové sady ASCII z roku 1963[1] se výrazně odlišovala od verze publikované v roce 1967 – neobsahovala malá písmena a některé řídicí znaky měly jiné významy nebo kódy.
Znaková sada ASCII z roku 1967 se stala základem většiny kódování znaků (význačnější výjimkou je kódování EBCDIC, které vyvinula firma IBM pro své sálové počítače přibližně ve stejné době, kdy vznikal kód ASCII). Představuje rozumný kompromis mezi minimalistickými sadami obsahujícími pouze písmena základní latinské abecedy, číslice a několik málo interpunkčních symbolů a bohatými znakovými sadami, jejichž příkladem je sada symbolů používaných programovacím jazykem APL.
Prvním směrem úprav ASCII bylo vytváření sedmibitových národních sad popsané v normách CCITT V.3 (později CCITT nebo ITU-T T.50), ISO/IEC 646 a ECMA-6. Tyto sady také zaváděly mezinárodní abecedu jako mírně upravenou verzi verzi amerického ASCII kódování (nahrazením znaku dolar znakem měnové jednotky a znaku tilda nadtržítkem).
Čeština používá tolik znaků s diakritikou, že pro ni nebylo možné vytvořit sedmibitovou znakovou sadu podle ITU-T T.50 nebo ISO-646. Pro výstup na tiskárny však bylo možné použít jiný postup popsaný v těchto normách – přetisk písmene jiným znakem, který vytváří diakritické znaménko; znak apostrof je použitelný jako čárka, znak nadtržítko (případně vlnovka) lze nouzově použít místo háčku.
Okolo roku 1980 se začínají ve větší míře používat a definovat osmibitové znakové sady. Tyto sady mají mnoho výhod, díky kterým se používaly přibližně tři desetiletí – umožňují vytvořit funkční národní prostředí pro jeden nebo několik jazyků, nemají velké nároky na systémové prostředky, identita jeden oktet = jeden znak = jedna tisková pozice zjednodušuje programování.
Problémem bylo, že mezinárodní normy pro osmibitové sady vznikly poměrně pozdě, takže mnoho dodavatelů software a hardware vytvořilo svoje vlastní sady, které často dosáhly většího rozšíření než mezinárodní normy. Existence nejméně šesti kódování češtiny vedla k problémům při komunikaci po síti a výměně dat. K dalším nevýhodám patří nemožnost používání jednoho kódování pro texty ve více jazycích a špatná podpora asijských jazyků. Snaha odstranit tyto nevýhody vedla k vytvoření jednotného standardu ISO/IEC 10646 – Unicode.
Většina osmibitových kódování používala pro prvních 128 kódů kód ASCII, případně jeho mezinárodní variantu. Rozšíření osmibitových kódování a zahájením práce na univerzální znakové sadě v roce 1991 vedlo k tomu, že do nových verzí mezinárodních standardů byla nakonec převzata sada ASCII bez jakýchkoli změn.
Většina kódování vzniklých po roce 1970 tak zahrnuje ASCII kód nebo jeho nějakou modifikaci. Poměrně časté je rozšíření kódování o semigrafické znaky, které se překrývají se znaky řídicími, systém pak může poskytovat dvě metody výpisu na obrazovku; jedna vypisuje semigrafické znaky, druhá interpretuje tytéž znaky jako řídicí. Další kódování z ASCII pouze volně vycházejí – mnoho kódování nedodržuje rozdělení na oblast řídicích a tisknutelných znaků, některá zachovávají pouze kódy písmen a číslic, případně některých speciálních znaků. Příkladem takových kódování je kódování Cork evropských fontů pro sázecí program TeX nebo sedmibitová abeceda pro GSM definovaná v GSM 03.38.
Escape sekvence
Znak ESC (escape) se používá např. pro definici tzv. escape sekvencí používaných pro rozšíření ASCII kódu pro různé účely. Jeden nebo několik znaků následujících znak ESC nejsou interpretovány jako ASCII kódy, ale mohou mít speciální význam – například mohou definovat novou pozici kurzoru na obrazovce terminálu nebo mohou definovat velikost fontu používaného tiskárnou, přepnout tiskárnu ze znakového do grafického módu atd.
Organizace ANSI definovala sekvence určené pro ovládání znakových terminálů. Tyto sekvence zahrnují např. posun kurzoru na určitý řádek a sloupec obrazovky.
Faktickým standardem pro starší jehličkové tiskárny jsou escape sekvence používané firmou Epson.
Odkazy
Reference
- ASCII. American Standard Code for Information Interchange. 1963. detail.
Externí odkazy
- Galerie ASCII na Wikimedia Commons
- ASCII v České terminologické databázi knihovnictví a informační vědy (TDKIV)
- Obrázky, zvuky či videa k tématu ASCII na Wikimedia Commons
- ASCII v České terminologické databázi knihovnictví a informační vědy (TDKIV)
- Slovníkové heslo ASCII ve Wikislovníku
- ASCII tabulka a přehled znaků