Provided by:
manpages-it_0.3.4-5_all 
NOME
UTF-8 - una codifica Unicode multi-byte ASCII-compatibile
DESCRIZIONE
L’insieme di caratteri Unicode occupa uno spazio a 16 bit. La codifica
più naturale di Unicode (nota come UCS-2) consta di sequenze di parole
a 16 bit. Queste stringhe possono contenere byte come ’\0’ o ’/’, con
il loro significato speciale per i nomi di file e per i parametri di
altre funzioni della libreria C, come parte di un carattere a 16 bit.
Inoltre, la maggioranza dei programmi UNIX si aspetta nomi di file in
ASCII e, senza grosse modifiche, non saprebbe leggere parole a 16 bit.
Per queste ragioni, l’ UCS-2 non è una codifica esterna di Unicode
adatta a nomi di file, file di testo, variabili ambientali, ecc. L’
Insieme universale di caratteri ISO 10646 (Universal Character Set),
un’estensione di Unicode, occupa addirittura uno spazio a 31 bit, e la
sua codifica naturale, UCS-4 (una sequenza di parole a 32 bit), soffre
degli stessi problemi.
La codifica UTF-8 di Unicode e UCS evita questi problemi, ed è il modo
migliore per implementare Unicode in un sistema operativo Unix-esco.
PROPRIETÀ
La codifica UTF-8 possiede queste ottime proprietà:
* i caratteri UCS da 0x00000000 a 0x0000007f (i caratteri US-ASCII
classici) sono codificati semplicemente come byte da 0x00 a 0x7f
(compatibilità ASCII). In altre parole, file e stringhe contenenti
solamente caratteri ASCII a 7 bit hanno la stessa codifica sia in
ASCII che in UTF-8.
* Tutti i caratteri UCS > 0x7f sono codificati come una sequenza a
multi-byte consistente esclusivamente di byte nell’intervallo da 0x80
a 0xfd, in modo tale da non trovare nessun byte ASCII all’interno di
un altro carattere, e da non avere problemi con, tra gli altri, ’\0’
o ’/’.
* L’ordinamento lessicografico delle stringhe in UCS-4 viene
strettamente mantenuto.
* Tutti i 2^31 possibili codici UCS possono essere codificati con
UTF-8.
* I byte 0xfe e 0xff non sono mai usati nella codifica UTF-8.
* Il primo byte di una sequenza multi-byte UCS che rappresenta un
carattere non ASCII è sempre nell’intervallo da 0xc0 a 0xfd e indica
la lunghezza della sequenza. Tutti i byte seguenti sono
nell’intervallo da 0x80 a 0xbf, facilitando un’eventuale
risincronizzazione e facendo diventare la codifica senza memoria e
resistente a byte mancanti.
* I caratteri UCS codificati con UTF-8 possono arrivare ai sei byte di
lunghezza, mentre quelli Unicode arrivano solo a tre. Poiché Linux
usa solo il sottoinsieme Unicode a 16 bit di UCS, le sequenze multi-
byte UTF-8 possono essere lunghe solo uno, due o tre byte in Linux.
CODIFICA
Le seguenti sequenze di byte vengono usate per rappresentare un
carattere. La sequenza da usarsi dipende dal numero del codice UCS del
carattere:
0x00000000 - 0x0000007F:
0xxxxxxx
0x00000080 - 0x000007FF:
110xxxxx 10xxxxxx
0x00000800 - 0x0000FFFF:
1110xxxx 10xxxxxx 10xxxxxx
0x00010000 - 0x001FFFFF:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x00200000 - 0x03FFFFFF:
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 - 0x7FFFFFFF:
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
Le configurazioni di bit xxx sono riempite coi bit del numero del
codice carattere rappresentato in binario. Viene usata solo la più
breve delle sequenze multi-byte che possono rappresentare il numero del
codice.
ESEMPI
Il carattere Unicode 0xa9 = 1010 1001 (il simbolo di copyright ©) si
codifica in UTF-8 come
11000010 10101001 = 0xc2 0xa9
e il carattere 0x2260 = 0010 0010 0110 0000 (il simbolo «non uguale»)
si codifica come:
11100010 10001001 10100000 = 0xe2 0x89 0xa0
STANDARD
ISO 10646, Unicode 1.1, XPG4, Plan 9.
AUTORE
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
VEDERE ANCHE
unicode(7)