Il codice morse è stato la prima codifica a permettere una comunicazione a lunga distanza. È stato 'Samuel F.B.Morse ad elaborarlo nel 1844. Questo codice è composto da punti e tratti (una specie di codifica binaria). Esso permise di effettuare delle comunicazioni molto più rapide rispetto a quello che permetteva di fare il sistema di posta utilizzato a quell'epoca negli USA: il Pony Express. L'interprete all'epoca era l'uomo, quindi bisognava avere una buona conoscenza del codice, ecc.
Numerosi codici furono poi inventati fra cui il codice d'Emile Baudot (detto fra l'altro codice Baudot, gli inglese lo chiamavano a loro volta Murray Code). Il 10 marzo 1876, il Dott. Graham Bell mise a punto il telefono, un'invenzione rivoluzionaria che permise di far circolare l'informazione vocale in linee metalliche. Per cronaca, la Camera dei rappresentanti ha deciso che l'invenzione del telefono va attribuita ad Antonio Meucci. Quest'ultimo aveva in effetti depositato una richiesta di brevetto nel 1871, ma non aveva potuto finanziarla fino al 1874.
Queste linee permisero lo sviluppo di telescrittori, delle apparecchiature di codifica e decodifica dei caratteri grazie al codice Baudot (i caratteri erano allora codificati a 5 bit e ce n'erano solamente 32). Negli anni 60, il codice ASCII (American Standard Code for Information Interchange) è adottato come standard. Esso permette la codifica dei caratteri su 8 bit, con 256 caratteri possibili.
La memoria del computer conserva tutti i dati sotto forma digitale. Non esistono metodi per immagazzinare direttamente i caratteri. Ogni carattere possiede quindi il suo equivalente in codice digitale: è il codice ASCII (American Standard Code for Information Interchange - tradotto «Codifica Americana Standard per lo Scambio d'Informazioni»). La codifica ASCII di base rappresentava i caratteri su 7 bit (cioè 128 caratteri possibili, da 0 a 127).
Le codifiche da 0 a 31 non sono dei caratteri. Si chiamano caratteri di controllo dato che permettono di fare delle azioni come: Ritorno a capo (CR); Bip sonoro (BEL); codifiche da 65 a 90 rappresentano le maiuscole; codifiche da 97 a 122 rappresentano le minuscole (basta modificare il sesto bit per passare dalle maiuscole alle minuscole, aggiungendo 32 al codice ASCII sulla base decimale).
carattere | codice ASCII | codice esadecimale |
---|---|---|
NUL (Nullo) | 0 | 00 |
SOH (Start of heading) | 1 | 01 |
STX (Start of text) | 2 | 02 |
ETX (End of text) | 3 | 03 |
EOT (End of transmission) | 4 | 04 |
ENQ (Enquiry) | 5 | 05 |
ACK (Acknowledge) | 6 | 06 |
BEL (Bell) | 7 | 07 |
BS (Backspace) | 8 | 08 |
TAB (Horizontal tabulation) | 9 | 09 |
LF (Line Feed) | 10 | 0A |
VT (Vertical tabulation) | 11 | 0B |
FF (Form feed) | 12 | 0C |
CR (Carriage return) | 13 | 0D |
SO (Shift out) | 14 | 0E |
SI (Shift in) | 15 | 0F |
DLE (Data link escape) | 16 | 10 |
DC1 (Device control 1) | 17 | 11 |
DC2 (Device control 2) | 18 | 12 |
DC3 (Device control 3) | 19 | 13 |
DC4 (Device control 4) | 20 | 14 |
NAK (Negative acknowledgement) | 21 | 15 |
SYN (Synchronous idle) | 22 | 16 |
ETB (End of transmission block) | 23 | 17 |
CAN (Cancel) | 24 | 18 |
EM (End of medium) | 25 | 19 |
SUB (Substitute) | 26 | 1A |
ESC (Escape) | 27 | 1B |
FS (File separator) | 28 | 1C |
GS (Group separator) | 29 | 1D |
RS (Record separator) | 30 | 1E |
US (Unit separator) | 31 | 1F |
SP (Space) | 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 |
Tasto di cancellazione | 127 | 7F |
Il codice ASCII è stato elaborato per la lingua inglese, non contiene quindi dei caratteri accentuati, né dei caratteri specifici ad una lingua. Per la codifica di questo tipo di carattere bisogna ricorrere ad un altro codice. Il codice ASCII è stato quindi esteso a 8 bit per poter codificare più caratteri (si parla quindi di codice ASCII esteso). Questo codice attribuisce i valori da 0 a 255 (il cui codice su 8 bit alle lettere maiuscole e minuscole, alle cifre, alla punteggiatura e agli altri simboli (caratteri accentuati in caso di codice iso-latin 1).
Il codice ASCII esteso non è unico e dipende fortemente dalla piattaforma utilizzata.
I due set di caratteri ASCII esteso usati più frequentemente sono:
Il codice ASCII esteso OEM, quello che equipara i primi terminali di tipo IMB PC:
Il codice ASCII esteso ANSI, utilizzato dai sistemi operativi recenti:
Il codice EBCDIC (Extended Binary-Coded Decimal Interchange Code), sviluppato da IBM, permette di codificare i caratteri ad 8 bit. Anche se largamente diffuso sui terminali IBM, non c'è stato il successo che invece ha riscontrato il codice ASCII.
Il codice Unicode è un sistema di codifica dei caratteri a 16 bit elaborato nel 1991. Il sistema Unicode permette di rappresentare tutti i caratteri attraverso un codice a 16 bit, indipendentemente da qualsiasi sistema operativo o linguaggio di programmazione. Esso raggruppa la quasi totalità degli alfabeti esistenti (arabo, armeno, cirillico, greco, ebraico, latino, ecc.) ed è compatibile con il codice ASCII. L'insieme dei codici Unicode è disponibile sul sito ufficiale Unicode.
Foto: © Pixabay.