Il codice ASCII è oggi il più usato dai computer per rappresentare i caratteri alfanumerici con numeri binari.
L'acronimo ASCII sta per American Standard Code for Information Interchange; questo codice fu progettato dopo il 1960 in ambiente IBM e quindi inserito nello standard ASA (American Standard Association) e in seguito nell'ANSI (American National Standards Institute).
Il codice doveva includere tutti i caratteri già presenti negli standard per le telecomunicazioni e cioè lo spazio, le 26 lettere (maiuscole) dell'alfabeto, le 10 cifre decimali, i segni di interpunzione oltre a un certo numero di simboli di uso comune. Un totale di 40-50 simboli che diventano più di 64 se si vogliono includere anche le lettere minuscole; poiché 64 = 26 richiede 6 bit, occorrevano almeno 7 bit.
E il codice ASCII nacque appunto come codice a 7 bit, due più del vecchio codice Baudot. Usando la notazione binaria ogni simbolo è rappresentato da un numero a 7 cifre, da 0000000 a 1111111, in decimale da 0 a 127, 128 caratteri in tutto.
In trasmissione in realtà vengono trasmessi ottetti di bit, detti byte, avanza quindi un ottavo bit che è usato come bit di controllo trasmissione.
I primi 32 caratteri da 0 a 31 sono caratteri di controllo, per esempio CR carriage return= ritorno carrello, numero 13, 0001101 in binario, LF Line Feed, prossima linea.
Il carattere 32 è lo spazio, i caratteri da 33 a 47 sono simboli vari, i caratteri da 48 a 57 rappresentano le 10 cifre decimali da 0 a 9, i caratteri da 58 a 64 sono altri simboli vari.
Le lettere latine maiuscole vanno dal codice ASCII 65 ('A') al 90 ('Z'); quelle minuscole da ASCII 97('a') a 122 ('z'); i rimanenti sono ancora simboli speciali, parentesi e simili, come da tabella a fianco.
Il codice ASCII in sostanza contiene i caratteri presenti sulla tastiera di una macchina da scrivere americana, mancano quindi del tutto i caratteri specifici di altre lingue, per esempio vocali accentate, con l'umlaut, caratteri con tilde, per non parlare di altri alfabeti come il greco, il cirillico ecc.ecc.
Questa limitazione suggerì ben presto di estendere ASCII con altri caratteri; nacquero codici ASCII estesi a 8 bit, sacrificando il bit di controllo; in questo modo fu possibile inserire vocali accentate, simboli grafici ecc.ecc. Purtroppo nessuno standard fu imposto a queste estensioni e ne nacquero molte diverse tra loro, una MSDOS, una Windows, una Unix ... in poche parole una Babele di estensioni.
Attualmente le estensioni più diffuse del codice ASCII sono ISO-8859-1, ISO-8859-15, Windows 1252.
La conseguenza di questa Babele la si vede ancora oggi navigando sul Web, capita spesso di trovarsi davanti a pagine con caratteri incomprensibili o sostituiti da punti di domanda. Sono caratteri appartenenti a uno dei tanti ASCII estesi, male interpretati da un browser configurato per un'altra estesione.
Dopo anni di confusione sta però finalmente emergendo il chiaro vincitore tra tutte queste estensioni, il codice UTF-8 che estende in modo molto intelligente l'originale ASCII a 7 bit, in modo da poter includere ben più di 256 caratteri.
Il trucco in sostanza è questo: vengono trasmessi come sempre ottetti (byte) di bit; se il bit di controllo è 0, l'ottetto va interpretato come carattere ASCII a 7 bit; se il bit di controllo è 1, va letto il prossimo ottetto che sarà l'ultimo se il bit di controllo è 0, altrimenti si deve leggere anche il successivo e così via. In questo modo diventa possibile codificare un numero pressochè infinito di caratteri; e infatti UTF-8 contiene ormai quasi tutti gli alfabeti del mondo presenti e passati, e anche futuri perché il codice può essere ulteriormente esteso.