Alfabet Morse’a był pierwszym kodem wykorzystywanym w komunikacji na duże odległości. Wymyślił go Samuel F.B. Morse w roku 1844. Kod ten składa się z kresek i kropek (jest to swego rodzaju kod binarny). Używano go, by komunikować się sprawniej niż przy pomocy Pony Express – ówczesnej amerykańskiej poczty. Telegrafista, który musiał dobrze znać kod, był wówczas ważną osobistością.
Tworzono różne inne kody, m. in. kod Émile’a Baudota (znany jako kod Baudota lub Kod Murraya).
10 marca 1876 dr Alexander Graham Bell zakończył prace nad telefonem – rewolucyjnym wynalazkiem, który przy pomocy przewodów mógł przenosić sygnały dźwiękowe. Ciekawostką jest fakt, że Izba Reprezentantów całkiem niedawno uznała, że wynalazcą telefonu był Antonio Meucci. Meucci złożył wniosek patentowy w 1871 r., ale od 1874 nie był już w stanie go przedłużać.
Linie telegraficzne umożliwiły powstanie dalekopisów – urządzeń, które mogły kodować i odkodowywać znaki przy użyciu kodu Baudota (znaki były kodowane przy użyciu 5 bitów naraz, przez co można było użyć maks. 32 znaków).
W latach 60. przyjęto kod ASCII (czyli American Standard Code for Information Interchange) jako nowy standard. Z ASCII można było kodować znaki przy użyciu 8 bitów – stąd możliwe było użycie 256 znaków.
Pamięć komputera zapisuje wszystkie dane w formie cyfrowej. Nie da się przechowywać samych znaków. Każdy znak ma swój odpowiednik w kodzie cyfrowym: to właśnie nazywamy kodem ASCII (tzn. American Standard Code for Information Interchange). Podstawowy kod ASCII przedstawiał znaki jako 7 bitów (dla 128 możliwych znaków, od 0 do 127).
(Zmiana 6 bitu przełącza duże litery na małe; odpowiada to dodawaniu 32 do kodu ASCII w bazie w systemie dziesiętnym).
Znak | Kod ASCII | Kod szesnastkowy |
---|---|---|
NUL (Null – zero) | 0 | 00 |
SOH (Początek nagłówka) | 1 | 01 |
STX (Początek tekstu) | 2 | 02 |
ETX (Koniec tekstu) | 3 | 03 |
EOT (Koniec transmisji) | 4 | 04 |
ENQ (Nawiązanie łączności) | 5 | 05 |
ACK (Potwierdzenie) | 6 | 06 |
BEL (Bell – syg. dźwiękowy) | 7 | 07 |
BS (Backspace – usunięcie znaku) | 8 | 08 |
TAB (Tabulacja pozioma) | 9 | 09 |
LF (Line Feed – kodowanie końca linii) | 10 | 0A |
VT (Tabulacja pionowa) | 11 | 0B |
FF (Form feed – przejście na następną stronę) | 12 | 0C |
CR (Powrót karetki) | 13 | 0D |
SO (Shift out – Wył. specjalnego zestawu znaków) | 14 | 0E |
SI (Shift in – Wł. specjalnego zestawu znaków) | 15 | 0F |
DLE (Data link escape – pominięcie znaków sterujących) | 16 | 10 |
DC1 (Sterownik urządzenia 1) | 17 | 11 |
DC2 (Sterownik urz. 2) | 18 | 12 |
DC3 (Sterownik urz. 3) | 19 | 13 |
DC4 ( Sterownik urz. 4) | 20 | 14 |
NAK (Negatywne potwierdzenie = błąd) | 21 | 15 |
SYN (Synchronizacja w stanie bezczynności) | 22 | 16 |
ETB (Koniec bloku transmisji) | 23 | 17 |
CAN (Anulowanie) | 24 | 18 |
EM (Koniec nośnika zapisu) | 25 | 19 |
SUB (Substitute – zastąpienie) | 26 | 1A |
ESC (Escape – przełączenie) | 27 | 1B |
FS (Separator plików) | 28 | 1C |
GS (Separator grupy) | 29 | 1D |
RS (Separator rekordów) | 30 | 1E |
US (Separator jednostki) | 31 | 1F |
SP (Spacja) | 32 | 20 |
! | 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 |
0 | 48 | 30 |
1 | 49 | 31 |
2 | 50 | 32 |
3 | 51 | 33 |
4 | 52 | 34 |
5 | 53 | 35 |
6 | 54 | 36 |
7 | 55 | 37 |
8 | 56 | 38 |
9 | 57 | 39 |
: | 58 | 3A |
; | 59 | 3B |
< | 60 | 3C |
= | 61 | 3D |
> | 62 | 3E |
? | 63 | 3F |
@ | 64 | 40 |
A | 65 | 41 |
B | 66 | 42 |
C | 67 | 43 |
D | 68 | 44 |
E | 69 | 45 |
F | 70 | 46 |
G | 71 | 47 |
H | 72 | 48 |
I | 73 | 49 |
J | 74 | 4A |
K | 75 | 4B |
L | 76 | 4C |
M | 77 | 4D |
N | 78 | 4E |
O | 79 | 4F |
P | 80 | 50 |
Q | 81 | 51 |
R | 82 | 52 |
S | 83 | 53 |
T | 84 | 54 |
U | 85 | 55 |
V | 86 | 56 |
W | 87 | 57 |
X | 88 | 58 |
Y | 89 | 59 |
Z | 90 | 5A |
[ | 91 | 5B |
\ | 92 | 5C |
] | 93 | 5D |
^ | 94 | 5E |
_ | 95 | 5F |
' | 96 | 60 |
a | 97 | 61 |
b | 98 | 62 |
c | 99 | 63 |
d | 100 | 64 |
e | 101 | 65 |
f | 102 | 66 |
g | 103 | 67 |
h | 104 | 68 |
i | 105 | 69 |
j | 106 | 6A |
k | 107 | 6B |
l | 108 | 6C |
m | 109 | 6D |
n | 110 | 6E |
o | 111 | 6F |
p | 112 | 70 |
q | 113 | 71 |
r | 114 | 72 |
s | 115 | 73 |
t | 116 | 74 |
u | 117 | 75 |
v | 118 | 76 |
w | 119 | 77 |
x | 120 | 78 |
y | 121 | 79 |
z | 122 | 7A |
{ | 123 | 7B |
124 | 7C | |
} | 125 | 7D |
~ | 126 | 7E |
przycisk Delete | 127 | 7F |
Kod ASCII został opracowany na bazie języka angielskiego. Nie posiada znaków akcentowanych i innych znaków diakrytycznych. Aby zakodować taki znak potrzebny jest inny system kodujący. Kod ASCII został rozszerzony do 8 bitów (1 bajt), aby dało się zakodować więcej znaków (tzw. Rozszerzony kod ASCII).
Ten kod przypisuje wartości od 0 do 255 (zakodowane jako 8 bitów, czyli 1 bajt) małym i dużym literom, cyfrom, znakom interpunkcyjnym i innym symbolom (w tym znakom akcentowanym w kodzie iso-latin1).
Rozszerzony kod ASCII nie jest ustandaryzowany i różni się w zależności od platformy.
Dwa najpopularniejsze zestawy znaków rozszerzonego ASCII to:
Kod EBCDIC (skrót od Extended Binary-Coded Decimal Interchange Code – rozszerzony dziesiętny zakodowany dwójkowo kod wymiany), opracowany przez IBM, jest wykorzystywany do kodowania znaków przy użyciu 8 bitów. Mimo iż jest szeroko wykorzystywany na komputerach IBM, nie jest zbyt udanym kodem ASCII.
Unicode to 16-bitowy system kodowania znaków opracowany w 1991 r. Unicode może wyrażać dowolne znaki w formie 16-bitowego kodu, niezależnie od systemu operacyjnego i języka programowania.
Obejmuje niemal wszystkie współczesne alfabety (w tym arabski, ormiański, cyrylicę, grecki, hebrajski i łaciński) i jest kompatybilny z kodem ASCII.
Lista wszystkich kodów używanych w Unicode jest dostępna na stronie oficjalnej stronie Unicode.
Zdjęcie: © Signs and Symbols - Shutterstock.com