Unicode è uno standard internazionale per la codifica, la rappresentazione e la gestione dei caratteri testuali provenienti da quasi tutti i sistemi di scrittura del mondo. Ogni carattere riceve un codice univoco, che può essere memorizzato in codifiche come UTF-8 o UTF-16. Ciò consente a Unicode di garantire una rappresentazione e un’elaborazione uniforme dei testi su diverse piattaforme e lingue.

Acquista e registra il tuo dominio con il provider n°1 in Europa
  • Domain Connect gratuito per una configurazione facile del DNS
  • Certificato SSL Wildcard gratuito
  • Protezione privacy inclusa

Che cos’è Unicode?

Unicode corrisponde a un sistema di codifica universale dei caratteri. Il termine deriva dall’inglese “Universal Character Encoding”. Si tratta di uno standard per la codifica dei caratteri scritto in rappresentazione binaria, che permette di salvare ed elaborare i testi con sistemi digitali.

Unicode rappresenta una novità in quanto non è legato ai formati e alle codifiche di un singolo alfabeto di una determinata lingua umana. È stato ideato con l’obiettivo di servire da standard uniforme per la riproduzione di tutti i sistemi di scrittura sviluppati dagli esseri umani e dei rispettivi caratteri.

Dalla pubblicazione di Unicode 1.0 alla fine del 1991, lo standard ha raggiunto quello che era lo scopo iniziale. Oggi browser e sistemi operativi usano internamente Unicode come formato uniforme. La versione 16.0, rilasciata nel 2024 da Unicode Consortium, ha riassunto il repertorio dello standard Unicode composto da un totale di 154.998 caratteri. Il set di caratteri corrispondenti allo standard Unicode coincide esattamente con quello dello Universal Coded Character Set (UCS), contenuto nella norma internazionale ISO/IEC 10646.

Base tecnologica per la codifica dei caratteri

Per prima cosa è importante comprendere che tutte le informazioni presenti in un sistema digitale si basano su una catena infinita di zeri e uno: la rappresentazione binaria. Il codice binario assomiglia per certi versi a un alfabeto, ma si compone soltanto di due “lettere”, appunto zero e uno. Ogni posizione all’interno di una sequenza composta da zeri e uno si definisce bit.

Il trucco della tecnologia dell’informazione digitale sta nel comporre i caratteri dei vari alfabeti come sequenze di zeri e uno. In questo modo si riescono a codificare sia i numeri che le lettere, ma anche a distinguere tra tutti gli altri stati. Generalmente si parla di simboli. Più lunga è la sequenza di zeri e uno per la rappresentazione di un singolo simbolo, più simboli si possono riprodurre. Con l’aggiunta di ogni bit raddoppia il numero dei simboli possibili.

Un esempio concreto: immagina di avere delle “parole” binarie della lunghezza di due bit. Queste permettono di codificare quattro numeri:

Parola di 2 bit Numero
00 0
01 1
10 2
11 3

Aggiungendo un ulteriore bit all’inizio della sequenza, raddoppia il numero delle possibili parole. Queste si compongono delle sequenze di bit già menzionate, con l’aggiunta di un uno o uno zero davanti. In questo modo possiamo codificare otto numeri:

Parola di 3 bit Numero
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
Fatto

Una parola di 8 bit viene definita ottetto o byte.

Per motivi di semplicità abbiamo deciso di mostrarti la codifica dei numeri. Lo stesso principio trova però utilizzo nei sistemi digitali anche per la codifica di lettere o di qualsiasi altro simbolo o stato. Di seguito proponiamo l’esempio molto semplificato di un codice binario di lettere:

Parola di 3 bit Lettera
000 A
001 B
010 C

La rappresentazione grafica di un carattere prende il nome di glifo. In base al font usato ci sono diversi glifi per lo stesso carattere. Addirittura, uno stesso font può contenere più varianti per uno stesso glifo. Per esempio, pensa a diversi pesi, legature e corsivi. Di seguito trovi una rappresentazione avanzata che riassume la corrispondenza di caratteri e glifi:

Rappresentazione binaria Numero decimale Carattere codificato Glifo
1000001 65 “A” maiuscola dell’alfabeto latino A
1100001 97 “a” minuscola dell’alfabeto latino a
0110000 48 Cifra araba “0” 0
0111001 57 Cifra araba “9” 9
11001000 200 “È” maiuscola È
11101000 232 “è” minuscola è

Terminologia della codifica dei caratteri

La codifica digitale dei caratteri comprende una serie di concetti specifici. L’uso dei vari termini ha un uso simile in italiano. Per poter dare una definizione Unicode precisa, riportiamo di seguito anche i termini in inglese:

Termine Significato Termine inglese
Set di caratteri Il numero di possibili caratteri, ad esempio le cifre “0–9”, le lettere “a–z”, ecc. Character set
Punto di codice o posizione di codice Il numero assegnato a un determinato carattere all’interno dello spazio di codice Code point
Codice di carattere Assegnazione di un qualsiasi carattere a un punto di codice Coded character set
Codifica di carattere Il processo per la trasformazione di un carattere in una struttura tecnica, ad esempio una rappresentazione binaria Character encoding

Le codifiche di caratteri più comuni

Dalla comparsa di Unicode si sono verificate una grande quantità di codifiche specifiche. La regola prevedeva l’uso di una codifica per ogni lingua o famiglia linguistica. Questo ha portato spesso a errori di rappresentazione e incongruenze nei dati. Per evitare che ciò continuasse ad accadere, le codifiche dei caratteri sono spesso state modellate come sovrainsiemi degli standard già esistenti, compatibili con le versioni precedenti. Per questo motivo lo standard Unicode moderno si basa sulla precedente codifica dei caratteri ISO Latin-1, basata a sua volta sul codice ASCII.

Codifica dei caratteri Bit per carattere Caratteri possibili Set di caratteri
ASCII 7 bit 128 Lettere, numeri e caratteri speciali della tastiera statunitense, così come i caratteri di controllo per telescrivente
ISO Latin-1 (ISO 8859-1) 8 bit 256 I primi 128 caratteri come ASCII, i successivi 128 caratteri per i caratteri speciali delle lingue europee
Universal Coded Character Set 2 (UCS-2) 16 bit 65.536 Caratteri del “Basic Multilingual Plane”(BMP); i primi 256 caratteri corrispondono a quelli di ISO Latin-1
Universal Coded Character Set 4 (UCS-4) 32 bit 1.114.111 I caratteri del BMP e altri; in totale 143.859 caratteri nella versione 13.0 di Unicode; i primi 256 caratteri corrispondono a quelli di ISO Latin-1
UCS Transformation Format 8 Bit (UTF-8) 8/16/24/32 bit 1.114.111 Qualunque carattere derivante da UCS-2 e UCS-4; i primi 256 caratteri corrispondono a quelli di ISO Latin-1

Struttura dello standard Unicode

Lo standard Unicode definisce i caratteri e i punti di codice corrispondenti per lettere, sillabe, ideogrammi, interpunzione, caratteri speciali e cifre. Oltre all’alfabeto latino supporta anche quello greco, cirillico, arabo, ebraico e tailandese. A questi si aggiungono anche le grafie giapponesi (katakana, hiragana), cinesi e coreane. Infine, comprende anche i caratteri speciali matematici, commerciali e tecnici, come gli storici caratteri di controllo per telescriventi.

I caratteri sono riassunti in una serie di tabelle. Di seguito ti forniamo una panoramica delle tabelle di caratteri più usate.

I sistemi di scrittura dello standard Unicode

Tabella dei caratteri Alcuni degli alfabeti contenuti
Sistema di scrittura europeo Armeno, georgiano, greco, latino
Sistema di scrittura africano Etiope, geroglifici egizi, copto
Sistema di scrittura mediorientale Arabo, ebraico, siriano
Sistema di scrittura centroasiatico Mongolo, tibetano, turco antico
Sistema di scrittura dell’Asia meridionale Brahmi, tamil, vedica
Sistema di scrittura sud-est asiatico Khmer, rohingya, tailandese
Sistema di scrittura oceanico e indonesiano Balinese, buginese, giavanese
Sistema di scrittura dell’Asia orientale CJK (cinese, giapponese, coreano), hangul (coreano), hiragana (giapponese)
Sistema di scrittura americano Cherokee, scrittura sillabica canadese, osage

Simboli e set di caratteri dello standard Unicode

Tabella dei caratteri Alcuni dei caratteri contenuti
Sistemi di notazione Scrittura Braille, notazione musicale, stenografia Duployan
Set di caratteri Caratteri della lingua inglese, caratteri delle lingue europee, caratteri CJK
Simboli alfanumerici Lettere matematiche, lettere cerchiate
Simboli tecnici Simboli per il linguaggio di programmazione APL, simboli per il riconoscimento ottico dei caratteri
Numeri e cifre Cifre maya, numeri siyaq ottomani, cifre della scrittura cuneiforme sumera
Simboli matematici Frecce, operatori matematici, forme geometriche
Emoji e pittogrammi Emoticon, dingbat, altri pittogrammi
Altri simboli Simboli alchemici, simboli delle valute, simboli degli scacchi, simboli del domino e simboli del mahjong

Per cosa si usa lo standard Unicode?

Lo standard Unicode serve principalmente da base fondamentale per l’elaborazione, l’archiviazione e lo scambio di testi in qualsiasi lingua. La maggior parte delle componenti software moderne quali librerie, protocolli, database, ecc., che operano sui testi, sono basate su Unicode. I seguenti esempi servono a chiarire la vastità delle possibilità del suo utilizzo.

Sistemi operativi

Nella maggioranza dei sistemi operativi moderni, Unicode è lo standard interno per la riproduzione testuale. Alcuni sistemi operativi come macOS di Apple permettono l’uso di caratteri Unicode nei nomi dei file.

Siti web

La variante di Unicode UTF-8 si è imposta come standard per la codifica dei documenti in HTML. Già nel 2016 più dell’80% dei siti web più visitati a livello mondiale utilizzavano UTF-8 per l’archiviazione e la riproduzione dei loro documenti HTML. Per l’uso di lettere non ASCII nei nomi di dominio si è invece affermato lo standard Punycode.

Crea il tuo sito web
Scopri le nuovi funzioni IA di MyWebsite
  • Editor facile e intuitivo con supporto IA
  • Immagini e testi d'effetto in pochi secondi
  • Dominio, indirizzo e-mail e certificato SSL inclusi

Linguaggi di programmazione

Molti dei linguaggi di programmazione moderni si servono di Unicode come base per l’elaborazione di testi. Un ulteriore sviluppo è la possibilità di usare i caratteri Unicode per la denominazione di variabili e funzioni. Tra i vari linguaggi è possibile in ECMAScript/JavaScript, come dimostrato dal seguente codice:

let ︎👍 = true;
let 👎 = false;
if (bool_var === ︎👎) {
 // …
}
javascript

Database

Il molto apprezzato e ampiamente utilizzato database MySQL supporta l’intero set di dati Unicode con la codifica di caratteri “utf8mb4”. L’uso della codifica di caratteri “utf8” comporta invece la perdita di caratteri il cui punto di codice eccede i tre byte.

Font

I font contengono glifi che servono per la riproduzione grafica del testo. A causa della grande quantità di caratteri dello standard Unicode, nessun font li contiene tutti. Servono diversi font a comprendere tutti quelli del Basic Multilingual Plane. Un paio di esempi:

Font Unicode Glifi Licenza
Noto ca. 77.000 Open Font License
Sun-ExtA/B ca. 50.000 Freeware
Unifont ca. 63.000 GNU GPL
Code2000 ca. 63.000 Shareware

Come si imposta Unicode?

In molti casi gli utenti ricorrono a Unicode senza neanche saperlo. Il testo digitale è presente nella maggior parte dei documenti e dei programmi sotto forma di Unicode e può essere copiato, incollato e modificato dall’utente a suo piacimento. A volte risulta necessario per l’utente finale aggiungere un determinato carattere Unicode all’interno di un testo. Per farlo, ci sono diverse possibilità che ti presentiamo qui di seguito.

Tastiere speciali

L’impiego di speciali tastiere software è in assoluto il metodo più diffuso per aggiungere caratteri Unicode in un testo. Su tutti i dispositivi mobili queste tastiere rendono possibile passare da una lingua a un’altra e quindi da un alfabeto a un altro. Cambiando l’alfabeto cambiano anche i tasti, ma i caratteri che compaiono appartengono tutti al repertorio Unicode. I caratteri dei vari alfabeti possono essere liberamente mischiati e combinati tra loro.

Un buon esempio sono le emoji: all’interno di Unicode le emoji sono dei normali caratteri, alla stregua di lettere, numeri e caratteri speciali. Come spesso accade per i caratteri digitali, la riproduzione delle emoji è indipendente, ogni sistema operativo riproduce la stessa emoji in maniera leggermente diversa.

Le utili tastiere software non trovano impiego solo ed esclusivamente sui dispositivi mobili, ma sono presenti anche su desktop. Sono disponibili con Windows, macOS e molte distribuzioni Linux e, in base alla lingua scelta, offrono una quantità variabile di caratteri. Poiché il numero dei tasti è limitato, non riportano tutti i caratteri Unicode. Al contrario, si tratta di una scelta dei caratteri più comunemente usati specifica per la relativa lingua.

Tabelle dei caratteri Unicode

Dopo le tastiere software, le tabelle di caratteri Unicode rappresentano il modo più conveniente per servirsi dei caratteri Unicode. Ricordiamo che un codice di carattere (“coded character set”) corrisponde alla quantità di tutti i caratteri, inclusi i rispettivi punti di codice univoci. L’organizzazione in tabelle si presta bene per questo tipo di struttura e infatti lo standard Unicode comprende le cosiddette Code Charts.

Da un lato queste tabelle permettono di copiare caratteri specifici da riutilizzare altrove. Dall’altro danno la possibilità all’utente finale di leggere il punto di codice di un carattere, ad esempio per usarlo come riferimento numerico del carattere (maggiori informazioni a riguardo nel prossimo paragrafo).

Anche molti sistemi operativi per desktop contengono una tabella di caratteri Unicode. Questo offre una panoramica di tutti i caratteri Unicode disponibili, inclusi punto di codice, descrizione e glifi. Un carattere può essere aggiunto con un clic o copiandolo. Una tabella di caratteri può essere creata con poche righe di codice. Più avanti in questo articolo ti mostriamo un esempio servendoci del linguaggio di programmazione Python.

Riferimento numerico dei caratteri

Al centro dello standard Unicode vi è l’assegnazione di caratteri ai punti di codice. Se si conosce il punto di codice di un carattere, lo si può usare per inserire il carattere corrispondente in vari contesti. Su Windows, l’inserimento di simboli Unicode avviene digitando una speciale combinazione di tasti attraverso la normale tastiera fisica. Ricorda però che il numero del punto di codice deve solitamente essere inserito in caratteri esadecimali.

Nella maggior parte dei casi le programmatrici e i programmatori hanno bisogno dei riferimenti numerici dei caratteri. La rappresentazione esadecimale dei punti di codice permette la riproduzione di un carattere Unicode con caratteri appartenenti al set ASCII. Di seguito ti mostriamo il procedimento in HTML, ma dal punto di vista teorico vale anche per Python, C++ e altri.

Lo schema generale per inserire un carattere attraverso il suo riferimento numerico consiste nel riferimento stesso preceduto da un termine di apertura e seguito da un termine di chiusura: nei documenti HTML il riferimento numerico si apre con &#x e si chiude con ;. Nel mezzo va riportato il punto di codice esadecimale di minimo due e massimo quattro cifre, senza lasciare spazi vuoti. Il modello da usare è quindi &#xNNNN;.

Per inserire il simbolo del copyright “©” in un documento HTML segui questo procedimento:

  1. Cerca il carattere in una tabella Unicode.
  2. Segnati il punto di codice relativo al carattere. In questo esempio, il punto di codice rappresentato in caratteri esadecimali è “U+00A9”.
  3. Riporta il riferimento del carattere nel codice sorgente HTML o aggiungi un documento in Markdown. Nel nostro caso inseriamo © che restituisce il simbolo “©”.

In alternativa, puoi usare i punti di codice inserendoli con caratteri decimali invece che esadecimali. Tuttavia, questo approccio è meno comune. In questo caso il riferimento numerico inizia con &# (ovvero senza la “x”) e si conclude sempre con ;. All’interno di questo intervallo si riporta il punto di codice in rappresentazione decimale. Sempre con riferimento all’esempio di cui sopra, il riferimento numerico per il simbolo del copyright andrebbe inserito così &#169.

Consiglio

Usa Unicode Character Inspector per scoprire velocemente i codici corrispondenti a un carattere.

Le entità

Poiché il modo di scrivere i caratteri Unicode come riferimenti numerici è tutt’altro che intuitivo, ci sono altri metodi a disposizione: le entità. Queste vengono definite per i caratteri più comunemente usati e assegnano al carattere un nome breve e facile da ricordare. Un’entità inizia con il carattere & e termina con il punto e virgola ;. Nel mezzo si posiziona il nome stabilito senza spazi. Per aggiungere il simbolo del copyright “©” in un documento HTML è sufficiente scrivere ©.

Consiglio

Puoi trovare la lista completa dei riferimenti dei caratteri nello standard HTML.

Linguaggi di programmazione

La maggior parte dei linguaggi di programmazione contiene funzioni di base per trasformare i caratteri e i punti di codice. Queste funzioni prendono spesso il nome di ord(carattere) e chr(punto di codice). Si presenta così:

chr(ord(carattere)) == carattere

Nota che è sempre possibile risalire al punto di codice corrispondente da un carattere. In senso contrario la corrispondenza funziona solo per i numeri effettivamente definiti come punto di codice del carattere codificato. Di seguito ti mostriamo lo schema di base ricorrendo a un esempio con Python:

# Determinare il punto di codice decimale di un carattere
ord('A') # `65`
# Determinare il punto di codice esadecimale di un carattere
hex(ord('A')) # `0x41`
# Determinare il carattere corrispondente al punto di codice
chr(65) # `'A'`
chr(0x41) # `'A'`
chr(0x110001) # errore, poiché il punto di codice > `0x110000`
python

Grazie a queste funzioni si può facilmente creare una tabella per i punti di codice del set di caratteri Unicode. Per farlo basta ripetere i punti di codice e indicare i caratteri corrispondenti. Con Python lo si può fare con poche righe di codice:

# iniziare `range` con `32`, poiché con valori più piccoli si ottengono i caratteri di controllo
# Fornire set di caratteri ASCII
for code_point in range(32, 128):
	print(code_point, hex(code_point), chr(code_point))
# Fornire ISO Latin-1
for code_point in range(32, 256):
	print(code_point, hex(code_point), chr(code_point))
python

Libreria dei linguaggi di programmazione ICU

I componenti internazionali per Unicode (“International Components for Unicode”, ICU) sono raccolti in una libreria di linguaggi di programmazione messa a disposizione da Unicode Consortium. La libreria rilasciata con licenza open source può essere usata in molti sistemi operativi. Il software serve all’internazionalizzazione della programmazione (“Internationalization” spesso abbreviato come “i18n”). Tra i settori di utilizzo vi sono:

  • Elaborazione di testi Unicode
  • Supporto di espressioni regolari in Unicode
  • Analisi sintattica (parsing) o formattazione di date, orari, numeri, valute e messaggi

La libreria ICU è disponibile in due versioni:

  • La “icu4c” è scritta in C/C++ e mette a disposizione un’API per questi linguaggi di programmazione.
  • La “icu4j” è scritta in Java e mette a disposizione un’API per questo linguaggio di programmazione.

L’utilizzo delle componenti porta a risultati consistenti indipendentemente dalla piattaforma in uso.

Attributo charset nell’head dei documenti HTML

Ad oggi, la maggior parte dei documenti HTML è disponibile nella codifica di caratteri UTF-8. Per assicurarsi che un visitatore o una visitatrice riesca a visualizzare il documento con i caratteri corretti, dovrebbe essere inserito un meta tag “Charset” nell’head del documento HTML. Questo serve a informare il browser che deve interpretare il documento richiesto come UTF-8:

<head>
<meta charset="utf-8">
<!-- altri elementi dell’head -->
</head>
html

Font di Instagram

Il popolare social network Instagram non permette alcuna formattazione testuale per le informazioni della biografia, i post o le storie. Le possibilità creative dell’utente risultano perciò limitate. Le sviluppatrici e gli sviluppatori ingegnosi sono però riusciti a ideare un trucchetto: Instagram si basa su Unicode e questo permette di comporre un testo, appositamente formattato, con caratteri speciali. I più usati sono i caratteri che ricordano le lettere latine. Il modo più facile per riuscirci è quello di usare un generatore di font per Instagram. L’uso dei caratteri di Instagram funziona anche in altri social network.

Hai trovato questo articolo utile?
Vai al menu principale