# Unicode

Unicode è un sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzato.
È stato compilato e viene aggiornato e pubblicizzato dallo Unicode Consortium, un consorzio internazionale di aziende interessate alla interoperabilità nel trattamento informatico dei testi in lingue diverse.

## Storia

Unicode è stato creato per risolvere i limiti dei tradizionali schemi di codifica dei caratteri. Ad esempio, sebbene i caratteri definiti nella ISO 8859-1 siano ampiamente utilizzati in paesi diversi, spesso si verificano incompatibilità tra paesi diversi. Molti metodi di codifica tradizionali hanno un problema comune, ovvero consentono ai computer di gestire un ambiente bilingue (di solito utilizzando lettere latine e le loro lingue native), ma non possono supportare un ambiente multilingue allo stesso tempo (riferendosi a una situazione in cui più lingue possono essere mescolate contemporaneamente).
La codifica Unicode contiene caratteri con stili di scrittura diversi, come " ɑ / a ", "强 / 强", "casa / famiglia / 戸". Tuttavia, c'è stata una controversia sull'identificazione del polimorfismo nei caratteri cinesi. Per i dettagli si vedano gli ideogrammi unificati di Cina, Giappone e Corea.
In termini di elaborazione testi, Unicode definisce un codice univoco (cioè un numero intero) per ogni carattere anziché un glifo. In altre parole, Unicode elabora i caratteri in modo astratto (cioè i numeri) e lascia il lavoro di deduzione visiva (come dimensione del carattere, forma dell'aspetto, forma del carattere, stile, ecc.) ad altri software, come la navigazione web o l'elaboratore di testi.
Al momento, quasi tutti i sistemi informatici supportano l'alfabeto latino di base e ciascuno supporta diversi altri metodi di codifica. Per essere compatibili con loro, i primi 256 caratteri di Unicode sono riservati ai caratteri definiti da ISO 8859-1, in modo che la conversione delle lingue esistenti dell'Europa occidentale non richieda una considerazione speciale; e un gran numero degli stessi caratteri viene ripetuto in diversi. Nel codice carattere, il vecchio complicato metodo di codifica può essere convertito direttamente tra la codifica Unicode senza perdere alcuna informazione. Ad esempio, la sezione del formato full-form contiene il formato full-form delle principali lettere latine. Nei glifi cinesi, giapponesi e coreani, questi caratteri sono presentati in full-form invece che nella comune forma half-form, che ha un effetto importante sul testo verticale e sul testo a spaziatura fissa.
Quando si rappresenta un carattere Unicode, di solito è rappresentato da "U +" seguito da un insieme di cifre esadecimali. Nel piano multilingue di base: (piano multilingue di base in inglese tutti i caratteri. BMP abbreviato noto anche come "piano zero", piano 0) all'interno, si utilizzano quattro cifre (ovvero 2 byte, per un totale di 16 bit, Come U + 4AE0, che supporta un totale di oltre 60 000 caratteri); per i caratteri al di fuori del piano zero si devono utilizzare cinque o sei cifre. La vecchia versione dello standard Unicode utilizza metodi di marcatura simili, ma con alcune piccole differenze: in Unicode 3.0, "U-" viene utilizzato seguito da otto cifre e "U +" deve essere seguito da quattro cifre.

## Struttura del codice

Unicode era stato originariamente pensato come una codifica a 16 bit (quattro cifre esadecimali) che dava la possibilità di codificare 65.535 (2$^{16}$ − 1) caratteri. Tanto si riteneva essere sufficiente per rappresentare i caratteri impiegati in tutte le lingue scritte del mondo. Ora invece lo standard Unicode, che tendenzialmente è perfettamente allineato con la norma ISO/IEC 10646, prevede una codifica fino a 21 bit e supporta un repertorio di codici numerici che possono rappresentare circa un milione di caratteri. Ciò appare sufficiente a coprire anche i fabbisogni di codifica di scritti del patrimonio storico dell'umanità, nelle diverse lingue e negli svariati sistemi di segni utilizzati.
Al 2009, solo una piccolissima parte di questa disponibilità di codici è assegnata. Per lo sviluppo dei codici sono infatti previsti 17 "piani" ("planes", in inglese), da 00 a 10hex, ciascuno con 65.536 posizioni (quattro cifre esadecimali), ma solo i primi tre e gli ultimi tre piani sono ad oggi assegnati, e di questi il primo, detto anche BMP, è praticamente sufficiente a coprire tutte le lingue più usate.
Concretamente, questo repertorio di codici numerici è serializzato mediante diversi schemi di ricodifica, che consentono l'uso di codici più compatti per i caratteri usati più di frequente. È previsto l'uso di codifiche con unità da 8 bit (byte), 16 bit (word) e 32 bit (double word), descritte rispettivamente come UTF-8, UTF-16 e UTF-32.
| Piano | Intervallo | Descrizione | Abbreviazione |
| 0 | 000000-00FFFF | Basic Multilingual Plane | BMP |
| 1 | 010000-01FFFF | Supplementary Multilingual Plane | SMP |
| 2 | 020000-02FFFF | Supplementary Ideographic Plane | SIP |
| 3 | 030000-03FFFF | Designato preliminarmente come Tertiary Ideographic Plane (TIP), ma nessun carattere gli è stato assegnato al momento. | TIP |
| 4-13 | 040000-0DFFFF | Attualmente non assegnati | |
| 14 | 0E0000-0EFFFF | Supplementary Special-purpose Plane | SSP |
| 15 | 0F0000-0FFFFF | Supplementary Private Use Area-A | |
| 16 | 100000-10FFFF | Supplementary Private Use Area-B | |

### Basic Multilingual Plane (BMP)

Il piano 0, il Basic Multilingual Plane (lett. "Piano multilinguistico di base") o BMP, è quello in cui sono stati assegnati la maggior parte dei caratteri. Il BMP contiene caratteri per quasi tutti i moderni linguaggi e un grande numero di caratteri speciali. La maggioranza dei codici assegnati ai caratteri nel BMP sono stati usati per codificare quelli cinesi, giapponesi e coreani (CJK).

## Sistemi di scrittura rappresentati

Unicode comprende quasi tutti i sistemi di scrittura attualmente utilizzati, fra i quali:
* Alfabeto arabo
* Alfabeto armeno
* Alfabeto bengalese
* Scrittura Braille
* Sillabario aborigeno canadese
* Sillabario cherokee
* Alfabeto copto
* Alfabeto cirillico
* Alfabeto devanagari
* Alfabeto ebraico
* Alfabeto dell'esperanto
* Alfabeto geʽez
* Alfabeti georgiani
* Alfabeto greco
* Alfasillabario gujarati
* Alfabeto gurmukhi (lingua punjabi)
* Scrittura hanzi (lingua cinese)
* Alfabeto hangŭl e scrittura hanja (lingua coreana)
* Scrittura hiragana e katakana e scrittura kanji (lingua giapponese)
* Alfabeto fonetico internazionale (IPA)
* Alfabeto khmer (lingua cambogiana)
* Scrittura kannada
* Alfabeto lao
* Alfabeto latino (base ed esteso)
* Scrittura limbu
* Alfabeto malayalam
* Scrittura mongola
* Alfabeto birmano
* Alfabeto N'Ko
* Scrittura odia
* Ol Chiki
* Alfabeto osmanya
* Scrittura sylheti
* Alfabeto siriaco
* Scrittura tamil
* Scrittura telugu
* Alfabeto tailandese
* Alfabeto tibetano
* Scrittura tifinagh
* Sillabario yi
* Alfabeto bopomofo
In aggiunta a quelli citati, sono disponibili glifi appartenenti a sistemi di scrittura più particolari, come quelli delle lingue estinte:
* Scrittura cuneiforme
* Alfabeto deseret
* Scrittura lineare B
* Scrittura kharoshthi
* Alfabeto ogamico
* Alfabeto etrusco (lingua etrusca, osca e umbra)
* Scrittura cuneiforme persiana antica
* Alfabeto fenicio
* Alfabeto gotico
* Alfabeto runico
* Alfabeto shaviano
* Alfabeto ugaritico
Infine, lo Unicode comprende anche molti simboli, come quelli matematici e musicali.

## Cronologia delle versioni

Negli ultimi anni una nuova versione è stata pubblicata praticamente ogni anno a seguito di una media di oltre 1.000 richieste di cambiamenti all'anno.
* DP 10646 1989 (Proposta di bozza della norma ISO 10646, indipendente dall'Unicode)
* DIS-1 10646 1990 (Prima bozza della norma ISO 10646, indipendente dall'Unicode)
* Unicode 1.0.0 ottobre 1991
* Unicode 1.0.1º giugno 1992 (Modificato per un eventuale allineamento alla norma ISO 10646)
* Unicode 1.1.0 giugno 1993 (Unicode e ISO unificate per la prima volta: i due codici sono identici allo standard ISO 10646-1: 1993)
* Unicode 1.1.5 giugno 1995
* Unicode 2.0.0 luglio 1996 (Allineata allo standard ISO 10646 estesa)
* Unicode 2.1.2 maggio 1998 (Fra gli altri, introduzione del carattere euro: €)
* Unicode 2.1.5 agosto 1998
* Unicode 2.1.8 dicembre 1998
* Unicode 2.1.9 aprile 1999
* Unicode 3.0.0 settembre 1999 (Allineata allo standard ISO 10646-1: 2000)
* Unicode 3.0.1 agosto 2000
* Unicode 3.1.0 marzo 2001 (Allineata allo standard ISO 10646-2: 2001)
* Unicode 3.1.1 agosto 2001
* Unicode 3.2.0 marzo 2002
* Unicode 4.0.0 aprile 2003 (Allineata allo standard ISO 10646: 2003)
* Unicode 4.0.1 marzo 2004
* Unicode 4.1.0 31 marzo 2005
* Unicode 5.0.0 14 luglio 2006 oltre 99.000 glifi
* Unicode 5.1.0 4 aprile 2008
* Unicode 5.2.0 1º ottobre 2009
* Unicode 6.0.0 10 ottobre 2010
* Unicode 6.1.0 26 gennaio 2012
* Unicode 6.2.0 26 settembre 2012
* Unicode 6.3.0 30 settembre 2013
* Unicode 7.0.0 16 giugno 2014
* Unicode 8.0.0 17 giugno 2015
* Unicode 9.0.0 21 giugno 2016
* Unicode 10.0.0 20 giugno 2017
* Unicode 11.0.0 5 giugno 2018
* Unicode 12.0.0 5 marzo 2019
* Unicode 12.1.0 7 maggio 2019
* Unicode 13.0.0 10 marzo 2020
* Unicode 14.0.0 14 settembre 2021
* Unicode 15.0.0 13 settembre 2022
* Unicode 16.0.0 10 settembre 2024