ASCII e Unicode: cosa sono e a cosa servono

Un computer capisce solo numeri, quindi ogni lettera che vedi sullo schermo è un codice. ASCII è stata la prima tabella di codici diventata standard e Unicode è quella che usiamo oggi per scrivere in qualsiasi lingua. Qui vedi come funzionano, quali codici conviene conoscere, perché a volte compaiono simboli strani al posto degli accenti e come consultare tutto nella tabella.

Aggiornato:

Che cos'è una codifica dei caratteri

Una codifica è un accordo: «il numero 65 significa la lettera A». Quando scrivi un testo, il programma salva quei numeri; quando un'altra persona lo apre, il suo programma li ritraduce in lettere usando lo stesso accordo. Se i due non usano la stessa tabella, il testo esce sbagliato.

Bisogna distinguere due idee. Una è il set di caratteri, l'elenco di quali numeri corrispondono a quali simboli. L'altra è come quei numeri vengono salvati in byte. In ASCII le due coincidono in modo banale; in Unicode no, ed è qui che entra in gioco UTF-8.

ASCII: 128 caratteri a 7 bit

ASCII (sigla di American Standard Code for Information Interchange) fu standardizzato negli anni Sessanta. Usa 7 bit, cioè 2 elevato a 7 = 128 codici, da 0 a 127. Di questi, 33 sono caratteri di controllo (da 0 a 31 e il 127) e 95 sono stampabili (da 32 a 126, compreso lo spazio).

Non include lettere accentate, né la ñ, né il simbolo dell'euro: è stato progettato per l'inglese. Questo spiega perché in seguito sono servite altre tabelle.

I codici che incontrerai più spesso. Lo spazio (32) conta come stampabile anche se non si vede.
Carattere di controlloDecimaleEsadecimaleBinario (7 bit)A cosa serve
Nullo (NUL)0000000000Segna la fine di una stringa in vari linguaggi
Tabulazione orizzontale (TAB)9090001001Salta al prossimo tabulatore
Nuova riga (LF)100A0001010Scende alla riga successiva
Ritorno a capo (CR)130D0001101Torna all'inizio della riga
Escape (ESC)271B0011011Avvia sequenze di controllo
Spazio32200100000Primo carattere stampabile
Cancella (DEL)1277F1111111Cancella il carattere

Relazioni da ricordare

La tabella non è ordinata a caso. Con poche regolarità puoi leggere i codici a memoria.

Fine riga: LF, CR e CRLF

Un'andata a capo sembra una cosa semplice, ma si scrive in modo diverso a seconda del sistema. Unix, Linux e macOS usano un solo carattere, LF (10). Windows ne usa due di seguito, CR e LF (13 e 10), noti come CRLF. Le vecchie telescriventi avevano bisogno di due comandi distinti: riportare il carrello all'inizio e far avanzare la carta di una riga.

Questa differenza è la causa di file che in un editor di base si vedono tutti su una riga, o con un simbolo strano alla fine di ogni riga. Se cerchi quale codice ha ciascuno, scrivi LF o CR nella casella di ricerca della tabella ASCII.

L'«ASCII esteso» non è uno standard

Poiché un byte ha 8 bit e ASCII ne usa solo 7, restavano liberi 128 codici (da 128 a 255) e ogni produttore e regione li riempì a modo suo. Questo si chiama «ASCII esteso», ma non esiste una tabella unica: ce ne sono molte, chiamate tabelle codici (code page). Due delle più note sono Latin-1 (ISO-8859-1), in cui la é è il codice 233, e Windows-1252, simile ma con differenze nei codici da 128 a 159 (lì si trova, per esempio, l'euro).

Il problema è che il codice 233 significa «é» in una tabella e un'altra cosa in un'altra. Un testo scritto con una tabella e letto con un'altra mostrava spazzatura. Unicode è nato per mettere fine a quel disordine.

Unicode e UTF-8

Unicode assegna un numero unico, chiamato punto di codice, a ogni carattere di quasi tutti i sistemi di scrittura del mondo, più simboli ed emoji. Oggi ha più di 150.000 caratteri. Si scrive con il prefisso U+ e in esadecimale: la «A» è U+0041, la «ñ» è U+00F1, l'euro è U+20AC e l'emoji del volto sorridente è U+1F600. I primi 128 punti di codice sono esattamente quelli dell'ASCII.

UTF-8 è il modo più usato per salvare quei numeri in byte, e ne usa da 1 a 4 a seconda del carattere. I 128 dell'ASCII occupano un solo byte identico a quello di sempre, quindi un testo ASCII è anche un testo UTF-8 valido. Il resto occupa più byte.

Più ci si allontana dall'ASCII, più byte occupa il carattere.
CaratterePunto di codiceByte in UTF-8Byte (esadecimale)
AU+0041141
éU+00E92C3 A9
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Perché compare «Ã±» al posto di «ñ»

È l'errore più comune e ha una spiegazione precisa. La ñ in UTF-8 sono due byte: C3 e B1. Se un programma crede che il testo sia in Latin-1, legge ogni byte come un carattere: il C3 è «Ã» e il B1 è «±». Risultato: «Ã±». Succede lo stesso con «é», che si vede come «Ã©», e con «perché», che compare come «perché».

La soluzione è quasi sempre indicare al programma di aprire il file come UTF-8 (in un editor di testo o nelle impostazioni di importazione di un foglio di calcolo). Quando accade il contrario, testo in Latin-1 letto come UTF-8, di solito compaiono rombi con un punto interrogativo, perché quei byte isolati non formano sequenze UTF-8 valide.

Come usare la tabella ASCII e il convertitore

Lo strumento «Tabella ASCII» mostra i 128 caratteri con il loro codice in decimale, esadecimale, ottale e binario, e il nome di quelli di controllo.

  1. Scrivi nella casella di ricerca un carattere, un codice o il nome di uno di controllo (per esempio A, 65, 41 o LF) per trovare la sua riga.
  2. Usa i pulsanti di filtro (Controllo, Cifre, Maiuscole, Minuscole, Segni) per vedere solo un gruppo.
  3. Per convertire, scrivi un testo in «Testo» e scegli il formato (decimale, esadecimale, ottale o binario): sotto compaiono i codici. «Ciao» dà 67 105 97 111 in decimale e 43 69 61 6F in esadecimale.
  4. Puoi farlo anche al contrario: incolla codici separati da spazi o virgole in «Codici» e si ricostruisce il testo. In esadecimale si accettano prefissi come 0x41.

Se il testo ha caratteri che non sono ASCII, come la ñ, lo strumento lo segnala e mostra il loro codice Unicode. Per vedere i byte reali in UTF-8 usa «Testo in binario»: la ñ dà 11000011 10110001, due byte da 8 bit. I limiti: la tabella mostra solo l'ASCII standard, non quello esteso, e tutto viene calcolato nel tuo browser senza inviare il testo a nessun server.

Domande frequenti

Quanti caratteri ha l'ASCII?

128, con codici da 0 a 127 e 7 bit ciascuno. Di questi, 33 sono di controllo e 95 sono stampabili, contando lo spazio.

Qual è il codice ASCII della lettera A e della a?

La «A» è 65 (41 in esadecimale, 01000001 in binario) e la «a» è 97 (61 in esadecimale, 01100001 in binario). Differiscono sempre di 32.

Qual è la differenza tra ASCII e Unicode?

ASCII ha 128 caratteri pensati per l'inglese. Unicode ne ha più di 150.000, di quasi tutte le lingue ed emoji, e i suoi primi 128 sono gli stessi dell'ASCII.

Che cos'è UTF-8?

È il modo più usato per salvare il testo Unicode in byte. Usa da 1 a 4 byte per carattere: quelli dell'ASCII ne occupano uno, una ñ ne occupa due e un emoji quattro.

Perché il mio testo mostra «Ã±» o «Ã©»?

Perché un testo salvato in UTF-8 viene letto come Latin-1. Apri il file indicando la codifica UTF-8 e il problema si risolve.