3. Kody alfanumeryczne

3.2. Kod ASCII

W technice cyfrowej i wywodzącej się z niej inżynierii komputerowej dominują obecnie kody alfanumeryczne oparte na standardzie ASCII (American Standard Code for Information Interchange), znanym także jako ANSI X3.4 oraz ISO-646-US i US-ASCII. W standardzie tym 128 podstawowym znakom, takim jak litery alfabetu łacińskiego, cyfry, znaki przestankowe oraz kody sterujące, przyporządkowano liczby z zakresu od 0 do 127. Z uwagi na oczywiste problemy z sortowaniem tak różnorodnych znaków tabele kodowe zestawia się według wartości kodów (dziesiętnych i szesnastkowych) - jak w poniższej tabeli.

Dec Hex Char
0 00 NUL null
1 01 SOH start of heading
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 TAB horizontal tabulation
10 0A LF line feed
11 0B VT vertical tabulation
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 one
18 12 DC2 device control two
19 13 DC3 device control three
20 14 DC4 device control four
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 Char
32 20 space
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 Char
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 Char
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

Tab. 1. US-ASCII

ASCII jest kodem 7-bitowym, przy czym oryginalny standard nie definiuje roli ósmego bitu, który w czysto sprzętowych realizacjach cyfrowych układów sterowania ciągle bywa wykorzystywany do kontroli parzystości lub do przechowywania dodatkowego atrybutu (np. podświetlenia). Najczęściej jednak ósmy bit służy rozszerzeniu podstawowego kodu ASCII o niezbędne znaki alfabetów narodowych, symbole matematyczne, znaki semigraficzne itp.. Niegdyś próbowano dopasować kod ASCII do warunków lokalnych poprzez odmienne wykorzystanie niektórych wartości kodów; np. w ISO-646-DE pod wartościami z zakresu 123-126 (7B-7E) kryją się odpowiednio znaki ä, ö, ü i ß. W miarę, jak rosły potrzeby, pojawiały się kolejne kody o rozmaitych sposobach i zakresach implementacji dodatkowych znaków, a wielu producentów sprzętu i oprogramowania wprowadzało własne "standardy". Z tych najbardziej znane jest rozszerzenie kodu ASCII wprowadzone przez firmę IBM, czyli CP437 (IBM PC Extended ASCII czyli DosLatinUS), które zainicjowało całą serię tzw. stron kodowych, począwszy od CP850 (DosLatin1) i CP852 (DosLatin2), obecnych w kartach graficznych, drukarkach i w MS-DOS.

Tab. 2. CP437

Tab. 3. CP850

Tab. 4. CP852

ISO 8859 to zestaw kilkunastu tabel wykorzystujących wszystkie 256 wartości 8-bitowego słowa kodowego i rozszerzających właściwą tabelę ASCII (kody od 0 do 127 pozostają bez zmian) o znaki pochodzące z poszczególnych regionów Europy, alfabet grecki, cyrylicę 3 itp. Podobnie jak w podstawowym kodzie ASCII, pierwsze 32 pozycje każdej rozszerzonej tabeli ISO 8859-n to niedrukowalne znaki sterujące. Odpowiednikiem CP850 jest ISO 8859-1, czyli Latin1, dedykowany Europie Zachodniej. Odpowiednikiem CP852 jest ISO 8859-2 (Latin2) zawierający komplet polskich znaków, a np. greckie litery można znaleźć w ISO 8859-7 (Greek)

Dec Hex Char
128 80 PAD padding character
129 81 HOP high octet preset
130 82 BPH break permitted here
131 83 NBH no break here
132 84 IND index
133 85 NEL next line
134 86 SSA start of selected area
135 87 ESA end of selected area
136 88 HTS character tabulation set
137 89 HTJ character tabulation with justification
138 8A VTS line tabulation set
139 8B PLD partial line forward
140 8C PLU partial line backward
141 8D RI reverse line feed
142 8E SS2 single-shift two
143 8F SS3 single-shift three
144 90 DCS device control string
145 91 PU1 private use one
146 92 PU2 private use two
147 93 STS set transmit state
148 94 CCH cancel character
149 95 MW message waiting
150 96 SPA start of guarded area
151 97 EPA end of guarded area
152 98 SOS start of string
153 99 SGCI single graphic character introducer
154 9A SCI single character introducer
155 9B CSI control sequence introducer
156 9C ST string terminator
157 9D OSC operating system command
158 9E PM privacy message
159 9F APC application program command
Dec Hex Char
160 A0  
161 A1 Ą
162 A2 ˘
163 A3 Ł
164 A4 ¤
165 A5 Ľ
166 A6 Ś
167 A7 §
168 A8 ¨
169 A9 Š
170 AA Ş
171 AB Ť
172 AC Ź
173 AD soft hyphen
174 AE Ž
175 AF Ż
176 B0 °
177 B1 ą
178 B2 ˛
179 B3 ł
180 B4 ´
181 B5 ľ
182 B6 ś
183 B7 ˇ
184 B8 ¸
185 B9 š
186 BA ş
187 BB ť
188 BC ź
189 BD ˝
190 BE ž
191 BF ż
Dec Hex Char
192 C0 Ŕ
193 C1 Á
194 C2 Â
195 C3 Ă
196 C4 Ä
197 C5 Ĺ
198 C6 Ć
199 C7 Ç
200 C8 Č
201 C9 É
202 CA Ę
203 CB Ë
204 CC Ě
205 CD Í
206 CE Î
207 CF Ď
208 D0 Đ
209 D1 Ń
210 D2 Ň
211 D3 Ó
212 D4 Ô
213 D5 Ő
214 D6 Ö
215 D7 ×
216 D8 Ř
217 D9 Ů
218 DA Ú
219 DB Ű
220 DC Ü
221 DD Ý
222 DE Ţ
223 DF ß
Dec Hex Char
224 E0 ŕ
225 E1 á
226 E2 â
227 E3 ă
228 E4 ä
229 E5 ĺ
230 E6 ć
231 E7 ç
232 E8 č
233 E9 é
234 EA ę
235 EB ë
236 EC ě
237 ED í
238 EE î
239 EF ď
240 F0 đ
241 F1 ń
242 F2 ň
243 F3 ó
244 F4 ô
245 F5 ő
246 F6 ö
247 F7 ÷
248 F8 ř
249 F9 ů
250 FA ú
251 FB ű
252 FC ü
253 FD ý
254 FE ţ
255 FF ˙

Tab. 5. ISO 8859-2 (Latin2)

Wprowadzenie standardu ISO 8859 miało w założeniu uporządkować zasady kodowania rozszerzeń ASCII. Niestety, nie tylko nie zapobiegło definitywnie dalszemu mnożeniu się stosowanych kodów alfanumerycznych, lecz wręcz zapoczątkowało kolejną ich falę, tak w ramach samego standardu (wystarczy prześledzić ewolucję obsługi języków krajów nadbałtyckich od ISO 8859-4 (Latin4) poprzez ISO 8859-10 (Latin6) do ISO 8859-13 (Latin7 Baltic Rim)), jak i incjatyw zewnętrznych (na przykład Microsoft zmodyfikował tabelę ISO 8859-2 i wprowadził ją do Windows jako stronę kodową CP1250 (WinLatin2)). Główną tego przyczyną są obiektywne ograniczenia wynikające ze zbyt małej ilości słów kodu 8-bitowego.

Tab. 6. CP1250 (WinLatin2)