Cosa sono UTF-8 e Unicode? Code point, codifica in byte e perché ha vinto UTF-8
Pubblicato il 11/03/2026 · 4 min di lettura · Strumenti per sviluppatori
Daniel Okonkwo — Sviluppatore front-end e redattore Tech presso OneKitly
Performance web · Formati di file
Verificato su 2 fonti
Unicode è un unico catalogo che assegna a ogni carattere un numero chiamato code point, scritto come U+0041 per A o U+1F600 per una faccina sorridente. UTF-8 è una regola per memorizzare quei numeri come byte: i code point fino a U+007F usano un byte, quelli più grandi usano due, tre o quattro byte. UTF-8 ha vinto perché è retrocompatibile con ASCII, non ha ambiguità sull'ordine dei byte e mantiene compatto il testo inglese pur rappresentando ogni scrittura del pianeta.
Unicode assegna a ogni carattere un code point; UTF-8 codifica quei code point in uno o quattro byte. Ecco come funziona e perché ha battuto le alternative.
Code point contro byte
Aiuta separare due idee. Un code point è un numero astratto che identifica un carattere nel catalogo Unicode, indipendentemente da come è memorizzato. Una codifica è la ricetta concreta che trasforma quel numero in byte su disco o in rete. Unicode definisce attualmente code point da U+0000 a U+10FFFF, più di un milione di posti, di cui circa 150.000 assegnati.
La notazione U+ è solo esadecimale, base 16. U+0041 è 65 in decimale, la lettera A, e U+20AC è 8364 in decimale, un simbolo di valuta. Convertire tra la forma esadecimale e il decimale o il binario è proprio il tipo di cambio di base che gestisce un convertitore di basi, ed è così che si verifica a mano quale schema di byte un code point deve produrre.
Da uno a quattro byte, decisi dalla dimensione
UTF-8 è una codifica a lunghezza variabile. I code point da U+0000 a U+007F, l'intervallo ASCII originale, sono memorizzati in un solo byte con il bit più alto a zero, quindi il testo inglese semplice è identico byte per byte ai vecchi file ASCII. I code point da U+0080 a U+07FF occupano due byte, U+0800 a U+FFFF tre, e tutto fino a U+10FFFF, inclusa la maggior parte delle emoji, quattro.
Il byte iniziale annuncia la lunghezza tramite i suoi bit alti: una sequenza di due byte inizia con 110, di tre byte con 1110, di quattro byte con 11110, e ogni byte di continuazione inizia con 10. Questo schema autodescrittivo consente a un decodificatore di risincronizzarsi dopo un byte corrotto e rende impossibile scambiare un byte di continuazione per l'inizio di un carattere.
Perché UTF-8 ha battuto le alternative
I principali rivali erano UTF-16 e UTF-32. UTF-32 memorizza ogni code point in quattro byte fissi, semplice da indicizzare ma dispendioso, quadruplicando la dimensione del testo inglese ordinario. UTF-16 usa due o quattro byte e un tempo dominava Windows e Java, ma ha bisogno di un marcatore d'ordine dei byte per dire quale estremo viene prima e usa ancora coppie surrogate per i code point grandi, reintroducendo la lunghezza variabile che voleva evitare.
UTF-8 evita tutto ciò. Ha un solo ordine di byte canonico, non richiede marcatori e resta compatibile byte per byte con l'enorme parco installato di strumenti ASCII, quindi un file UTF-8 pieno di inglese semplice si apre correttamente in software antecedente a Unicode. Queste virtù pratiche, non un decreto di comitato, ne hanno fatto lo standard del web, dove ora copre la stragrande maggioranza delle pagine.
Domande frequenti
- UTF-8 è la stessa cosa di Unicode?
- No. Unicode è il catalogo che assegna a ogni carattere un code point. UTF-8 è un modo di codificare quei code point come byte. Unicode dice qual è il numero; UTF-8 dice come memorizzarlo.
- Quanti byte usa un'emoji in UTF-8?
- La maggior parte delle singole emoji sta sopra U+FFFF e occupa quattro byte. Alcune emoji visibili sono in realtà più code point uniti da giunzioni a larghezza zero, quindi su disco possono occupare molti più byte di quanto suggerisca un carattere.
- Perché il mio testo mostra caratteri illeggibili come é?
- È una discrepanza: byte scritti come UTF-8 vengono letti come una codifica a un byte tipo Latin-1, quindi una sequenza di due byte appare come due caratteri sbagliati. Dichiara e leggi il file come UTF-8 a entrambe le estremità per correggere.
- UTF-8 ingrandisce i file per testo non inglese?
- A volte. Le lingue a scrittura latina restano vicine a un byte per carattere, ma scritture come il cinese o il giapponese usano tre byte per carattere in UTF-8 contro due in UTF-16. Per contenuti misti o prevalentemente latini, UTF-8 è di solito il più compatto nel complesso.
Articoli che potrebbero interessarti
Tutte le guide →Strumenti correlati
Fonti
Hai notato un errore in questo articolo?