UTF-32
# UTF-32

UTF-32 (Unicode Transformation Format, 32 bit) è una codifica di caratteri Unicode in sequenze di numeri a 32-bit. È conosciuta anche come UCS-4 (Universal Character Set a 4 byte).

A differenza delle altre codifiche Unicode (UTF-8, UTF-16) che usano una rappresentazione dei dati a lunghezza variabile, UTF-32 è a lunghezza fissa. Proprio l'uso di 4 byte per ogni carattere lo porta a non essere molto efficiente sulla gestione dello spazio. Nello specifico, i caratteri al di fuori del Basic Multilingual Plane sono così rari che per molti testi possono essere considerati come inesistenti (ai fini del calcolo della dimensione), ma questo fatto rende la dimensione del testo codificato in UTF-32 da due a quattro volte più grande rispetto alle altre codifiche.

Anche se l'avere un numero fisso di byte per carattere da codificare può sembrare più semplice, questa codifica è usata meno frequentemente delle altre. Facilita la divisione di stringhe, ma non significativamente se confrontata con UTF-8 e UTF-16. Non semplifica il calcolo della lunghezza effettiva della stringa visualizzata se non in limitati casi, perché, anche con font a larghezza fissa ci possono essere più punti di codifica per ogni posizione di carattere (i caratteri combinati) o più di un carattere visualizzato per una singola codifica (per esempio negli ideogrammi CJK). I caratteri combinati fanno sì che gli editor di testo non possano trattare ogni singolo carattere codificato come un singolo carattere che sia possibile editare.

Sebbene in generale poco utilizzata, questa codifica ha una proprietà che può renderla interessante in qualche caso: il valore numerico dei 32 bit che codificano in UTF-32 ciascun code point (punto di codifica) è esattamente il valore numerico che identifica il code point. In altri termini, se il nome del code point è U+XYZK (con XYZK cifre esadecimali) la rappresentazione esadecimale del numero binario di 32 bit che ne rappresenta la codifica UTF-32 è esattamente XYZK.

## Storia

Lo standard ISO 10646 definisce un encoding form a 31 bit chiamato UCS-4, nel quale ciascun carattere codificato nell'Universal Character Set (UCS) è rappresentato da un numero compreso tra 0 e 7FFFFFFF esadecimale.

UCS-4 è sufficiente per rappresentare tutti i caratteri del range definito da Unicode, che ha 1.114.112 (= $2^{20}+2^{16})$ codici (code points) e quindi richiede valori da 0 e 10FFFF esadecimale. Qualcuno considerò uno spreco riservare un'area di space code così grande per mappare un relativamente piccolo insieme di codici e così venne proposta una nuova codifica, UTF-32. Esso è un sottoinsieme di UCS-4 che usa codici a 32 bit nel code space 0-10FFFF.

