Provided by: manpages-it_0.3.4-5_all bug

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)