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)