Introduzione alla codifica dei caratteri


La necessita'  di rappresentare mediante cifre binarie (0 e 1)  quasiasi informazione richiede che a  ciascun carattere (simboli alfabetici maiuscoli e minuscoli, segni di interpunzione, cifre) venga associata una sequanza di cifre binarie.
L'  associazione e' in principio arbitraria. Per permettere un ragionevole grado di interoperabilita',  si e'  reso pero'  necessario procedere a delle standardizzazioni.

Storicamente le prime codifice, BCD, EBCDIC, ASCII  associavano ad ogni carattere del'  alfabeto inglese (niente lettere accentate, dunque) una sequenza di bit (4 per BCD, 8 per EBCDIC e 7 per ASCII).
Successivamente, l' esigenza di coprire insiemi di caratteri  diversi per il supporto dei molti alfabeti esistenti, ha richiesto ampliamenti di questi schemi di codifica.

Cosi' lo schema di codifica ASCII si e' evoluto in schemi estesi a 8 bit standardizzati da organismi nazionali ed internazionali (ISO: International Organization for Standardization; IEC: Internationa Electrotechnical Commission). Lo standard ISO 8859 prevede codifiche a 8 bit per molti dei linguaggi alfabetici esistenti (ISO 8859-1, detto anche Latin1,  per i linguaggi dell'Europa Occidentale. ISO 8859-2 per i linguaggi dell'Europa Orientale, ISO 8859-5 per i caratteri cirillici,  ISO 8859-6 per i caratteri arabi e molti altri).
La sequenza originale ASCII resta come sottoinsieme proprio (i primi 128 caratteri)  di ciascuno standard ISO8859.

Il problema dello standard ISO8859 e'  la non univocita'  tra sequenze binarie e caratteri.  Inoltre anche lo standard a 8 bit non permette la rappresentazione di moltissimi dei simboli  utilizzati nella rappresentazione grafica dei linguaggi naturali e artificiali utilizzati nel mondo. Basti pensare alla rappresentazione mediante ideogrammi dei linguaggi delll'  estremo oriente.

Per superare queste limitazioni dal 1991 e'   stato messo a punto lo standard Unicode che fornisce (utilizzando fino a  21 bit) la possibilita'  di rappresentare fino a un milione di caratteri  coprendo cosi'  tutte le possibili necessita'  esistenti.
Nello standard Unicode, ogni carattere e'  univocamente associato ad una codifica binaria. Anche in questo caso, la codifica ASCII costituisce un sottoinsieme delle codifiche unicode. Inoltre, per ragioni di efficienza, la rappresentazione dei caratteri mediante Unicode non e'  diretta ma, per ragioni di efficienza, su ciascuna piattaforma hardware/software,  passa per l'  utilizzo di ricodifiche che permettono di utilizzare meno bit per i caratteri usati piu' frequentemente. Esempi di tali ricodifiche sono UTF-8, UTF-16 e UTF-32 che utilizzano gruppi di bit di lunghezza variabile a partire da gruppi di  di 8, 16 e 32 bit.

UTF-8 (Unicode Transformation Format, 8 bit) è una ricodifica di Unicode in cui i caratteri piu'  frequenti sono codificati mediante 8 bit (includendo la codifica ASCII per i primi 128 caratteri) e quelli meno frequenti utilizzano un numero maggiore di bit.