Che cos'è Unicode: guida completa, usi e codifiche

Ultimo aggiornamento: 20 agosto 2025
  • Unicode assegna un punto di codice univoco a ciascun carattere e sincronizza il suo repertorio con ISO/IEC 10646.
  • UTF-8, UTF-16 e UTF-32 codificano gli stessi caratteri e consentono una conversione senza perdita di dati.
  • Le proprietà di normalizzazione, Bidi e UCD garantiscono un confronto, un ordinamento e un rendering coerenti.
  • L'adozione di Unicode (preferibilmente UTF-8 sul web) previene la corruzione e facilita l'internazionalizzazione.

Illustrazione generica su Unicode

Unicode è il linguaggio comune che i computer utilizzano per gestire il testo : assegna un numero univoco a ogni carattere e simbolo, di quasi tutti i sistemi di scrittura, in modo che possa essere memorizzato, elaborato e condiviso senza problemi tra piattaforme e paesi diversi.

Questo standard è nato per superare i limiti dei vecchi set di caratteri ( il set ASCII , le tabelle codici, l'EBCDIC, ecc.), che risultavano inadeguati o incompatibili tra loro, e oggi è sincronizzato con ISO/IEC 10646, mantiene gli algoritmi (come quello bidirezionale) e definisce proprietà e regole di normalizzazione in modo che tutto funzioni in modo coerente.

Cos'è Unicode e perché è così importante?

Unicode è uno standard di codifica dei caratteri universale e in continua evoluzione che descrive ogni carattere con un nome, un punto di codice e un insieme di proprietà (alfabeto, categoria, direzionalità, maiuscole/minuscole, ecc.). Il Comitato Tecnico Unicode (UTC), all'interno del Consorzio Unicode, lo mantiene sincronizzato con lo standard ISO/IEC 10646.

Il suo obiettivo è universalità, uniformità e unicità : un ampio repertorio che consenta lo scambio inequivocabile di testi multilingue, con regole chiare e riproducibili. Grazie a ciò, le moderne tecnologie (sistemi operativi, browser, XML, Java, database) possono combinare alfabeti latini e arabi, ideogrammi CJK, emoji e simboli tecnici o musicali all'interno dello stesso documento.

Caratteri, glifi e punti di codice

In Unicode, un carattere è un'unità astratta di informazione e un punto di codice è il suo identificatore numerico . Un glifo è la forma visiva (ciò che si vede sullo schermo), che dipende dal font . Un singolo carattere può avere più glifi e talvolta un glifo rappresenta più di un carattere.

La notazione usuale per un punto di codice è U+XXXX in esadecimale . Esempi illustrativi tratti dal materiale analizzato: la 'l' minuscola è U+006C, la 'ü' minuscola precomposta è U+00FC, la 'é' è U+00E9 e la beta greca: la maiuscola è U+0392 e la minuscola U+03B2 (in alcuni testi la 'β' è citata con U+0392, ma quel codice corrisponde alla 'Β' maiuscola).

Lo spazio dei codici Unicode ha 1.114.112 posizioni possibili (fino a U+10FFFF) , organizzate per coprire e classificare tutti i sistemi di scrittura e i simboli, con decine di migliaia di assegnazioni effettive e in continua crescita in ogni versione.

Piani, aree e isolati

Unicode divide il suo spazio dei caratteri in 17 piani, ciascuno con un massimo di 65.536 punti di codice . Questa organizzazione facilita il raggruppamento di script e simboli correlati e permette di trovare rapidamente ciò che si sta cercando.

I piani più rilevanti sono: il Piano Multilingue di Base (BMP, piano 0) che riunisce quasi tutti gli alfabeti moderni e molti simboli; il Piano Multilingue Supplementare (SMP, piano 1) che memorizza scritture storiche e simboli tecnici (ad esempio, musicali e matematici); il Piano Ideografico Supplementare (SIP, piano 2) che espande gli ideogrammi CJK; il piano 14 (SSP) che include etichette speciali; e i piani 15 e 16 sono ad uso privato.

Blocchi e aree : le mappe sono informalmente suddivise in aree e formalmente in blocchi contigui. I blocchi vengono utilizzati per tabulare e documentare i caratteri, sebbene non sempre corrispondano a raggruppamenti linguistici significativi.

  15 vantaggi del telelavoro per il tuo benessere lavorativo e personale

Ideogrammi CJK e progetto Unihan

Gli ideogrammi dell'Asia orientale (Han) sono unificati in Unicode, con variazioni stilistiche a seconda della regione , ma tutti si riferiscono allo stesso carattere astratto. La loro gestione è affidata all'Ideographic Rapporteur Group (IRG), un gruppo ISO/IEC JTC1/SC2/WG2 con rappresentanti di Cina, Giappone, Corea, Vietnam, Hong Kong, Macao, Singapore, Stati Uniti e altri paesi.

Il database Unihan raccoglie informazioni ausiliarie (letture, significati, equivalenze) essenziali per la gestione di questi ideogrammi in diverse lingue e standard storici o aziendali.

Principali blocchi e estensioni CJK :

  • Ideogrammi unificati CJK (BMP, U+4E00–U+9FFF): 20.992 caratteri comunemente usati.
  • Estensione A (BMP, U+3400–U+4DBF): 6.592 ideogrammi meno frequenti.
  • Estensioni B–H: in SMP/SIP/TIP, ammontano a decine di migliaia in più (B: U+20000–U+2A6DF, 42.720; C: U+2A700–U+2B73F, 4.154; D: U+2B740–U+2B81F, 222; E: U+2B820–U+2CEAF, 5.762; F: U+2CEB0–U+2EBEF, 7.473; G: U+30000–U+3134F, 4.939;
  • Altri blocchi CJK correlati: Radicali Kangxi (U+2F00–U+2FDF), simboli e punteggiatura CJK (U+3000–U+303F), compatibilità e formati di compatibilità, supplemento ideogramma di compatibilità, ecc.

Unicode prevede che l'integrazione degli ideogrammi non avrà una fine assoluta e contempla meccanismi come le sequenze di descrizione ideografica per rappresentare i simboli non codificati scomponendoli in componenti esistenti (con le dovute precauzioni: senza decomposizione canonica o garanzie in operazioni come la ricerca o l'ordinamento).

Forme di codifica: UTF-8, UTF-16 e UTF-32

Unicode definisce le forme di trasformazione (UTF) che convertono i punti di codice in unità di memoria, in modo che il software possa elaborare il testo in modo efficiente in base al suo contesto.

UTF-8 è un formato di codifica a lunghezza variabile, orientato ai byte, compatibile con ASCII nell'intervallo U+0000–U+007F in un singolo byte. Lo standard attuale utilizza da 1 a 4 byte per carattere; alcuni testi più datati menzionano 1–6, ma nello standard Unicode moderno è 1–4. È il formato dominante sul web.

UTF-16 utilizza unità a 16 bit

(una o due unità di codice per carattere) : la maggior parte dei caratteri BMP rientra in un'unità; i caratteri supplementari utilizzano coppie surrogate nell'intervallo U+D800–U+DFFF.

UTF-32 ha lunghezza fissa: 4 byte per carattere, semplice ma dispendioso in termini di spazio; utile quando l'indicizzazione diretta dei caratteri è importante e la memoria non è un problema.

Come vengono distribuiti i bit in UTF-8

Il formato UTF-8 distribuisce i bit del punto di codice in sequenze da 1 a 4 byte con intestazioni riconoscibili, evitando ambiguità e facilitando l'individuazione dei confini dei caratteri.

Intervallo Unicode Schema di bit Byte
U+0000..U+007F 0xxxxxx 1
U+0080..U+07FF 110yyyyy 10xxxxxx 2
U+0800..U+FFFF 1110zzzz 10yyyyyy 10xxxxxx 3
U+010000..U+10FFFF 11110uuu 10uuuzzzz 10yyyyyy 10xxxxxx 4

Un vantaggio fondamentale di UTF-8 è che evita i problemi di ordine dei byte (endianness) e consente un'elaborazione altamente efficiente dei flussi di testo, oltre ad essere retrocompatibile con ASCII.

Schemi di codifica, endianness e BOM

Oltre ai formati UTF, Unicode descrive gli schemi di serializzazione che definiscono come i byte vengono trasmessi tra sistemi con endianness diversa e come vengono segnalati aspetti quali l'ordine dei byte.

  • UTF-8: l'endianità non si applica. Può essere trasportata Byte Order Mark (BOM) come suggerimento, sebbene non sia obbligatorio o consigliato di default.
  • UTF-16: Varianti BE/LE (big/little-endian) e BOM opzionale (se mancante e non definito dal protocollo, si presuppone big-endian).
  • UTF-32: Varianti BE/LE con regole analoghe; BOM consentito come segno d'ordine.
  Componenti del computer: una guida hardware completa

Esistono anche varianti specifiche come UTF-16BE/UTF-16LE e UTF-32BE/UTF-32LE (senza BOM per convenzione), e altre codifiche di compatibilità storiche come UTF-7 o UTF-EBCDIC, oltre a GB18030 (equivalente cinese di UTF-8 con supporto per il cinese semplificato e tradizionale).

Normalizzazione, composizione ed equivalenze

Molti caratteri possono essere rappresentati come precomposti o come sequenze di base + segni diacritici . Esempi classici dal materiale rivisto: la 'Ä' precomposta è U+00C4, mentre la forma scomposta è 'A' (U+0041) + dieresi (U+0308). Il carattere vietnamita 'ỗ' può essere rappresentato come 'o' (U+006F) + circonflesso (U+0302) + tilde (U+0303).

Unicode definisce forme standardizzate e due tipi di equivalenza : canonica (stesso contenuto essenziale) e di compatibilità (forme che possono apparire identiche ma presentano differenze semantiche). La standardizzazione garantisce un confronto affidabile tra stringhe e riduce le duplicazioni.

Algoritmo bidirezionale e caratteri speciali

Per gli alfabeti che si scrivono da destra a sinistra, come l'arabo o l'ebraico, Unicode incorpora un algoritmo bidirezionale standardizzato e in continua evoluzione (Bidi) (ad esempio, le revisioni nella versione 6.3), in modo che i testi misti con latino e arabo siano rappresentati nel corretto ordine visivo.

Classi di punti di codice che dovrebbero essere note in base al materiale ricevuto: caratteri grafici (lettere, segni, simboli), formattazione (caratteri invisibili che influenzano l'elaborazione: interruzione di riga U+2028, interruzione di paragrafo U+2029, spazio rigido U+00A0), codici di controllo ereditati per la compatibilità (intervalli U+0000–U+001F, U+007F, U+0080–U+009F), uso privato, posizioni riservate, sostituti (U+D800–U+DFFF per UTF-16) e non caratteri (U+FFFE, U+FFFF in ciascun piano).

Unicode, ISO/IEC 10646 e altri standard (ASCII, ANSI, code page)

Unicode è sincronizzato con ISO/IEC 10646 (UCS) e conserva le mappature agli standard precedenti (ASCII, ISO 8859-1, ANSI Z39.64, JIS X 0208, KS X 1001, GB 2312, GB 18030, HKSCS, CNS 11643, ecc.), oltre a riservare spazi per uso privato da parte dei produttori.

ASCII vs. Unicode : ASCII è un set di caratteri a 7 bit con 128 caratteri , sufficiente per l'inglese di base, ma insufficiente per le lingue con segni diacritici, ideogrammi o emoji . Unicode copre più di 140.000 caratteri ed è in continua espansione, con codifica a 8/16/32 bit secondo il formato UTF-12.

ANSI e tabelle codici : "ANSI" si riferisce solitamente alle tabelle codici a 8 bit di Windows, limitate e reciprocamente incompatibili. Un computer che utilizza OEM-Latin II e apre un testo in IBM EBCDIC-Cirlico visualizzerà caratteri errati. Unicode risolve questo problema con un unico set di caratteri e conversioni senza perdita di dati tra le sue diverse forme.

Implementazione su sistemi (Windows, Solaris) e conversione

Windows utilizza internamente UTF-16 per le sue API moderne e offre funzionalità come MultiByteToWideChar e WideCharToMultiByte per la conversione tra Unicode e tabelle codici (SBCS/DBCS/MBCS). Se si è costretti a convertire in una tabella codici, potrebbe verificarsi una perdita di dati se questa non è in grado di rappresentare tutti i caratteri.

Le nuove applicazioni su Windows dovrebbero utilizzare internamente UTF-16 e lasciare la conversione ai livelli periferici (I/O, protocolli), riducendo al minimo la corruzione dei dati. Ciononostante, Windows mantiene la compatibilità con le codifiche quando ciò è inevitabile.

Secondo la documentazione aggiornata, Oracle Solaris 11 supporta Unicode 6.0 e ISO/IEC 10646:2011 a livello di sistema, utilizzando UTF-8 come formato predefinito nei suoi set di parametri, il che evita problemi di ordinamento dei byte e preserva in modo trasparente l'ASCII.

Unicode in pratica: Web, documenti e programmazione

Sul web, è comune servire e memorizzare contenuti in UTF-8 . In HTML, dichiara '<meta charset="UTF-8">' per garantire la compatibilità e utilizza entità numeriche esadecimali quando necessario (esempio: l'euro '&#x20AC;').

  Guida completa e dettagliata all'assemblaggio del computer.

In Word, è possibile inserire facilmente simboli Unicode posizionando il cursore, andando su Inserisci > Simbolo oppure digitando il codice e premendo Alt+X; in questo modo il valore viene convertito nel carattere corrispondente, seguendo le procedure standard. Vedi anche l' elenco dei codici Alt per l'inserimento di simboli tramite tastiera.

Nei linguaggi di programmazione : in Python 3, le stringhe sono già Unicode; in Java e C#, è possibile utilizzare i caratteri di escape '\uXXXX'; in HTML, '&#xXXXX;'. L'importante è che la modifica, la compilazione e la trasmissione utilizzino la stessa codifica per evitare errori.

Copiare e incollare i simboli funziona se l'intera stringa è in Unicode . Se alcune parti di essa utilizzano una codifica diversa, potrebbero comparire punti interrogativi, quadrati o altri simboli strani.

Database dei caratteri (UCD), proprietà e categorie

Il database dei caratteri Unicode (UCD) pubblica, per ogni punto di codice, il suo nome, la categoria, lo script, le proprietà di maiuscole/minuscole, la direzionalità e altre caratteristiche . Queste informazioni sono fondamentali per il corretto funzionamento dei motori di rendering e dell'elaborazione del testo.

Grazie a queste proprietà , diversi componenti e algoritmi (come l'ordinamento, la segmentazione delle parole o la conversione da maiuscolo a minuscolo) possono comportarsi in modo coerente con gli stessi dati.

Versioni ed estensioni dello standard: punti salienti

Unicode si evolve con ogni nuova versione , incorporando nuovi alfabeti, simboli ed emoji. Tra le tappe fondamentali si annoverano la versione 1.0 del 1991, con 7.161 caratteri, e le successive espansioni che hanno aggiunto migliaia di nuovi simboli, ideogrammi, emoji e alfabeti.

Ad esempio, nel 2022 , la versione 15.0 ha aggiunto 4.192 ideogrammi CJK e altri elementi, raggiungendo circa 149.186 caratteri.

Strumenti per esplorare la tabella Unicode

Esistono utility gratuite per la ricerca e l'analisi dei personaggi : Unibook Character Browser, SYMBL e Branah.com consentono di interrogare proprietà, nomi e blocchi di personaggi, facilitando così a sviluppatori e creatori di contenuti la ricerca rapida delle informazioni necessarie.

Casi d'uso: moduli di indirizzo, internazionalizzazione e business

Consentire agli utenti di inserire gli indirizzi nella propria lingua e nel proprio alfabeto contribuisce a ridurre gli errori e a migliorare l'esperienza utente. Inoltre, l'interoperabilità Unicode previene problemi di conversione tra sistemi diversi, mantenendo l'integrità del testo lungo tutta la catena digitale.

Per questo motivo, Unicode è l'elemento fondamentale che garantisce che il testo rimanga definitivo in tutta l'infrastruttura digitale , dai moduli web ai sistemi di database e ai documenti stampati, indipendentemente dal fatto che si utilizzino 'ñ', caratteri arabi, cinesi o emoji nella stessa frase.

Numerazione binaria
Articolo correlato:
Numerazione binaria: il linguaggio segreto dei computer