Vai al contenuto
OneKitly

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

Daniel OkonkwoSviluppatore front-end e redattore Tech presso OneKitly

Performance web · Formati di file

Verificato su 2 fonti

Vedi il profilo
In breve

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.

Convertitore di basiConverti un numero fra tutte le 35 basi, senza arrotondamenti, con complemento a due.Prova lo strumento

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?