Provided by: manpages-it_2.80-3_all bug

NOME

       charsets  -  visione  del  programmatore  degli  insiemi di caratteri e
       dell'internazionalizzazione

DESCRIZIONE

       Linux e un sistema operativo internazionale.  Molte delle sue utilita e
       driver  dei  dispositivi  (incluso  il driver della console) supportano
       insiemi di caratteri  multilingue,  incluse  le  lettere  dell'alfabeto
       latino  con  segni  diacritici, accenti, logotipi e interi alfabeti non
       latini compresi quello greco, cirillico, arabo ed ebraico.

       Questa pagina di manuale presenta il punto di vista di un programmatore
       sui   diversi   standard  per  gli  insiemi  di  caratteri  e  su  come
       interagiscono in Linux.  Gli standard  discussi  includono  ASCII,  ISO
       8859,  KOI8-R,  Unicode,  ISO  2022  e  ISO  4873.  Verra data maggiore
       importanza agli insiemi di caratteri effettivamente usati come  insiemi
       di  caratteri  di  localizzazione,  non  sulla miriade di altri insiemi
       presenti nei dati in altri sistemi.

       L'elenco completo di insiemi di caratteri usati da glibc 2.2.3  in  una
       localizzazione           supportata           ufficialmente          e:
       ISO-8859-{1,2,3,5,6,7,8,9,13,15},   CP1251,   UTF-8,    EUC-{KR,JP,TW},
       KOI8-{R,U},  GB2312,  GB18030,  GBK,  BIG5,  BIG5-HKSCS and TIS-620 (in
       nessun  ordine   particolare).    (Il   rumeno   potrebbe   passare   a
       ISO-8859-16).

ASCII

       ASCII  (American Standard Code For Information Interchange) e l'insieme
       di caratteri originale  a  7  bit,  creato  in  origine  per  l'inglese
       americano.  Viene ora descritto dallo standard ECMA-6.

       Esistono alcune varianti ASCII che sostituiscono il simbolo del dollaro
       con i simboli  di  altre  valute,  e  la  punteggiatura  con  caratteri
       alfabetici  non inglesi per includere altri caratteri a 7 bit tedeschi,
       francesi, spagnoli ed altri.  Sono tutte deprecate, in quanto glibc non
       supporta  localizzazioni  in  cui  insiemi  di caratteri non siano veri
       insiemi di ASCII (questi insiemi sono noti  come  ISO-646,  un  parente
       prossimo di ASCII che permette la sostituzione di questi caratteri).

       Essendo Linux stato scritto per hardware progettato negli USA, supporta
       ASCII nativamente.

ISO 8859

       ISO 8859 e una serie di 15 insiemi di caratteri a 8 bit che  contengono
       US  ASCII  nella  meta  bassa (quella a 7 bit), caratteri invisibili di
       controllo nelle posizioni da 128 a 159 e 96 grafici a  larghezza  fissa
       nelle posizioni da 160 a 255.

       Di  questi,  il  piu  importante  e ISO 8859-1 (Latin-1).  E supportato
       nativamente dal driver di console di Linux, abbastanza bene  da  X11R6,
       ed e l'insieme base di caratteri di HTML.

       Il  supporto  di  console  per  gli  altri  insiemi di carattere 8859 e
       disponibile in Linux grazie a utilita in modo utente (come  setfont(8))
       che  modificano le associazioni di tastiera e la tabella grafica EGA, e
       impiegano una "mappa utente" per la tabella di caratteri nel driver  di
       console.

       Ecco una breve descrizione di ciascun insieme:

       8859-1 (Latin-1)
              Latin-1 copre la maggior parte delle lingue europee occidentali,
              come albanese, catalano, danese, olandese, inglese, lingua delle
              isole   Faroer,   finlandese,   francese,   tedesco,  galiziano,
              irlandese, islandese, italiano, norvegese, portoghese,  spagnolo
              e   svedese.    La  mancanza  dei  logotipi  ij  (olandese),  oe
              (francese) e virgolette "vecchio stile" (tedesco) e tollerabile.

       8859-2 (Latin-2)
              Latin-2 supporta molte lingue slave e centro-europee a caratteri
              latini:   ceco,  croato,  polacco,  rumeno,  slovacco,  sloveno,
              tedesco e ungherese.

       8859-3 (Latin-3)
              Latin-3 e popolare tra gli  autori  di  esperanto,  galiziano  e
              maltese (il turco invece ora si scrive con 8859-9).

       8859-4 (Latin-4)
              Latin-4  introduce  lettere  per  estone,  lettone  e lituano. E
              essenzialmente obsoleto;  vedere  8859-10  (Latin-6)  e  8859-13
              (Latin-7).

       8859-5 Lettere  cirilliche  per  bulgaro,  bellorusso, macedone, russo,
              serbo e ucraino.  Gli  ucraini  leggono  la  lettera  `ghe'  con
              trattino  in basso come `heh' e avrebbero bisogno di una ghe con
              trattino in alto per scrivere la ghe corretta.  Vedere piu sotto
              la discussione su KOI8-R.

       8859-6 Supporta  l'arabico.   La  tabella  di  glifi 8859-6 contiene un
              insieme  di  caratteri  fissi  con  lettere  distinte,   ma   un
              appropriato motore di visualizzazione dovrebbe combinarli usando
              le corrette forme iniziali, mediane e finali.

       8859-7 Supporta il greco moderno.

       8859-8 Supporta l'ebraico moderno senza niqud (segni di punteggiatura).
              Niqud  e lo sviluppo completo dell'ebraico della Bibbia vanno al
              di la degli scopi di questo insieme di caratteri: in  Linux,  la
              codifica favorita per questi caratteri e UTF-8.

       8859-9 (Latin-5)
              Questa  e  una  variante  di  Latin-1 che sostituisce le lettere
              islandesi con quelle turche.

       8859-10 (Latin-6)
              Latin 6 aggiunge le ultime lettere inuit (groenlandese)  e  sami
              (lappone)  mancanti  in  Latin-4,  cosi da coprire l'intera area
              nordica.   RFC  1345  elencava  una  versione   preliminare,   e
              differente,  di  `latin6'.   Il  sami skolt ha ancora bisogno di
              alcuni ulteriori accenti.

       8859-11
              Esiste  solo  come  bozza  standard  rifiutata.   La  bozza  era
              identica a TIS-620, che veniva usato sotto Linux per il Thai.

       8859-12
              Questo  insieme non esiste.  Qualcuno ha suggerito il vietnamita
              per questo spazio, ma esso non rientra nei 96 caratteri ISO (non
              combinati)  offerti  da  8859.  L'insieme di caratteri preferito
              usato sotto Linux per il vietnamita e UTF-8.

       8859-13 (Latin-7)
              Supporta il linguaggio baltico Rim: in  particolare,  include  i
              caratteri lettoni non inseriti in Latin-4.

       8859-14 (Latin-8)
              Insieme  di  caratteri celtico, che comprende gaelico e gallese.
              Contiene  anche  i  caratteri  punteggiati  usati  nel   vecchio
              irlandese.

       8859-15
              Aggiunge   il  segno  dell'Euro  e  alcune  lettere  francesi  e
              finlandesi assenti in Latin-1.

       8859-16 (Latin-10)
              Questo insieme comprende molte  lingue  inserite  in  8859-2,  e
              supporta il rumeno in modo piu completo.

   KOI8-R
       KOI8-R  e  un insieme di caratteri non ISO molto diffuso in Russia.  La
       meta bassa e US ASCII; la meta alta contiene un  insieme  di  caratteri
       cirillici,  concepito vagamente meglio di quello di ISO 8859-5.  KOI8-U
       e un comune insieme di caratteri basato  su  KOI8-R,  che  contiene  un
       miglior   supporto   per   l'ucraino.   Nessuno  di  questi  insiemi  e
       compatibile con ISO-2022, diversamente dalla serie ISO-8859.

       Il supporto di console per KOI8-R  e  disponibile  in  Linux  grazie  a
       utilita  in modo utente che modificano le associazioni di tastiera e la
       tabella grafica EGA, e impiegano una "mappa utente" per la  tabella  di
       caratteri nel driver di console.

   JIS X 0208
       JIS  X  0208  e  un insieme nazionale di caratteri standard giapponesi.
       Anche se ci sono alcuni altri insiemi di caratteri standard in Giappone
       (come JIS X 0201, JIS X 0212 e JIS X 0213), questo e il piu importante.
       I caratteri vengono mappati in una matrice 94x94 a  due  byte,  e  ogni
       byte e compreso nell'intervallo 0x21-0x7e.  Si noti che JIS X 0208 e un
       insieme di caratteri, non una codifica: questo significa che JIS X 0208
       non  puo  essere  usato  per  indicare  dati  di  testo.   Si  usa come
       componente  per  costruire   codifiche   come   EUC-JP,   Shift_JIS   e
       ISO-2022.JP.   EUC-JP  e  la  codifica  piu  importante  sotto Linux, e
       include US ASCII e JIS X 0208.  In questa codifica i  caratteri  JIS  X
       0208  vengono  espressi in due byte, ognuno dei quali e il codice JIS X
       0208 piu 0x80.

   KS X 1001
       KS X 1001  e  un  insieme  nazionale  di  caratteri  standard  coreani.
       Proprio  come  JIS  X  0208, i caratteri vengono mappati in una matrice
       94x94 a due byte.  KS X 1001 si usa come JIS X  0208,  come  componente
       per  costruire codifiche come EUC-KR, Johab e ISO-2022-KR.  EUC-KR e la
       codifica piu importante sotto Linux, e include US ASCII E  KS  X  1001.
       KS C 5601 e il vecchio nome di KS X 1001.

   GB 2312
       GB  2312  e  un  insieme  nazionale  di  caratteri  standard  cinesi di
       terraferma usato per esprimere il cinese  semplificato.   Proprio  come
       JIS X 0208, i caratteri vengono mappati in una matrice 94x94 a due byte
       usata per costruire EUC-CN: essa e la  codifica  piu  importante  sotto
       Linux  e  include  US  ASCII  E  GB  2312.  Si noti che EUC-CN spesso e
       chiamato GB, GB 2312 o CN-GB.

   Big5
       Big5 e un insieme di caratteri popolare in Taiwan che esprime il cinese
       tradizionale.   (Big5  e sia un insieme di caratteri che una codifica).
       E un superset di US ASCII.  I caratteri non ASCII vengono  espressi  in
       due  byte.   I  byte  0xa1-0xfe  vengono usati come byte iniziali per i
       caratteri a due byte.  Big5 e la sua estensione sono largamente usati a
       Taiwan e Hong Kong.  Non e conforme a ISO 2022.

   TIS 620
       TIS  620  e un insieme nazionale di caratteri standard tailandesi, ed e
       un superset di US ASCII.  Come le serie ISO 8859, i caratteri Thai sono
       mappati   in  0xa1-0xfe.   TIS  620  e  l'unico  insieme  di  caratteri
       comunemente usato sotto Linux oltre a UTF-8 per  ottenere  combinazioni
       di caratteri.

   UNICODE
       Unicode  (ISO  10646) e uno standard il cui scopo e rappresentare senza
       ambiguita ogni carattere di ogni lingua umana.  La struttura di Unicode
       permette  20.1  bit per codificare qualunque carattere.  Dato che molti
       computer non  includono  interi  a  20.1  bit,  Unicode  solitamente  e
       internamente codificato con interi a 32 bit e con una serie di interi a
       16 bit (UTF-16, che ha bisogno di due  interi  a  16  bit  solo  quando
       codifica  alcuni  rari  caratteri)  o  con  una  serie  di byte a 8 bit
       (UTF-8).     Informazioni    su    Unicode    sono    disponibili     a
       <http://www.unicode.org>.

       Linux rappresenta Unicode tramite il "Formato di trasferimento Unicode"
       (Unicode Transfer Format) a 8 bit (UTF-8).  UTF-8  e  una  codifica  di
       Unicode a lunghezza variabile.  Utilizza 1 byte per codificare 7 bit, 2
       byte per 11 bit, 3 byte per 16 bit, 4 byte per 21 bit, 5  byte  per  26
       bit e 6 byte per 31 bit.

       Poniamo  che  0,1,x  sia  uno  zero,  uno o un bit arbitrario.  Un byte
       0xxxxxxx rappresenta  l'Unicode  00000000  0xxxxxxx,  che  codifica  lo
       stesso  simbolo dell'ASCII 0xxxxxxx.  Percio, ASCII rimane invariato in
       UTF-8 e coloro che usano solo ASCII non notano nessuna  differenza:  ne
       nel codice, ne nella dimensione del file.

       Un  byte  110xxxxx e l'inizio di una codifica a due byte, dove 110xxxxx
       10yyyyyy sta per 00000xxx xxyyyyyy.  Un byte 1110xxxx e l'inizio di una
       codifica  a  tre byte, dove 1110xxxx 10yyyyyy 10zzzzzz sta per xxxxyyyy
       yyzzzzzz.  (Se si usa UTF-8 per codificare l'ISO 10646  a  31  bit,  la
       progressione continua fino alle codifiche a 6 byte.)

       Per  gli  utilizzatori  degli  insiemi  di  caratteri  ISO-8859, questo
       significa che i caratteri al di fuori dell'ASCII  sono  ora  codificati
       con  due  byte.   Cio  tende  ad  espandere  un file ordinario di testo
       dell'uno o due per cento.  Per utilizzatori russi o greci, espande file
       ordinari  di testo del 100%, dato che il testo in queste lingue e quasi
       tutto  al  di  fuori  dell'ASCII.   Per  gli  utilizzatori   giapponesi
       significa  che  la  codifica  a 16 bit oggi comunemente usata usera tre
       byte.  Anche se ci sono algoritmi di conversione da alcuni  insiemi  di
       caratteri  (specialmente  ISO-8859-1)  a  Unicode, conversioni generali
       richiedono  l'uso  di  tabelle  di  conversione,  che  possono   essere
       piuttosto grandi per codifiche a 16 bit.

       Si  noti  che  UTF-8  e  autosincronizzante:  10xxxxxx  e  una  coda, e
       qualsiasi altro byte e la testa  di  un  codice.   Si  noti  anche  che
       l'unico modo in cui un byte ASCII puo comparire in una sequenza UTF-8 e
       come se stesso.  In particolare, non ci sono byte NULL ('\0')  inseriti
       o '/' che formano una parte di un codice piu lungo.

       Poiche ASCII e, in particolare, NUL e '/' sono invariati, il kernel non
       si  rende  conto  dell'utilizzo  di  UTF-8.   Non  gli   interessa   il
       significato dei byte di cui si occupa.

       Le  sequenze  di  dati Unicode sono solitamente rese attraverso tabelle
       che associano sottoinsiemi di Unicode a glifi.  Internamente, il kernel
       usa  Unicode per descrivere il sottoinsieme di caratteri caricato nella
       RAM video.  Cio significa che in modo UTF-8 si puo usare un insieme  di
       caratteri  con  soli 512 simboli diversi.  Questo non e sufficiente per
       giapponese, cinese e coreano, ma basta per la maggior parte degli altri
       utilizzi.

       Attualmente  il  driver  di console non si occupa delle combinazioni di
       caratteri.  Dunque il tailandese, il sioux e qualunque altro script che
       abbia bisogno di combinazioni di caratteri non puo essere gestito dalla
       console.

   ISO 2022 e ISO 4873
       Gli standard ISO 2022 e 4873 descrivono un  modello  di  controllo  dei
       caratteri  basato  sugli usi di VT100.  Questo modello e (parzialmente)
       supportato dal kernel di Linux e da xterm(1).  E popolare in Giappone e
       Corea.

       Ci sono quattro insiemi di caratteri grafici, chiamati G0, G1, G2 e G3:
       uno di loro e l'insieme di caratteri attuale per i codici con  bit  piu
       alto  zero  (all'inizio  G0),  e  uno di loro e l'insieme attuale per i
       codici con bit piu  alto  uno  (all'inizio  G1).   Ciascun  insieme  di
       caratteri grafici ha 94 o 96 caratteri ed e essenzialmente un insieme a
       sette  bit.   Usa  i  codici  040-0177  (041-0176)   oppure   0240-0377
       (0241-0376).  G0 ha sempre 94 elementi e usa i codici 041-0176.

       Si  passa da un insieme all'altro attraverso le funzioni di cambiamento
       ^N (SO o LS1), ^O (SI o LS0), ESC n (LS2), ESC o (LS3),  ESC  N  (SS2),
       ESC O (SS3), ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R).  La funzione LSn
       fa si che l'insieme Gn sia quello attuale per codici con bit  piu  alto
       zero.   La  funzione LSnR fa si che l'insieme Gn sia quello attuale per
       codici con bit piu alto uno.  La funzione SSn fa si  che  l'insieme  Gn
       (n=2  o  3)  sia  quello  attuale  per  il  solo  carattere  successivo
       (qualsiasi sia il valore del suo bit piu alto).

       Un insieme da 94 caratteri  viene  denotato  come  insieme  Gn  da  una
       sequenza  di escape ESC ( xx (per G0), ESC ) xx (per G1), ESC * xx (per
       G2), ESC + xx (per G3), dove xx e un simbolo o una  coppia  di  simboli
       trovati  in  ISO  2375  International Register of Coded Character Sets.
       Per esempio,  ESC ( @ seleziona l'insieme di caratteri ISO 646 come G0,
       ESC  ( A seleziona l'insieme standard inglese (con la sterlina al posto
       del cancelletto), ESC ( B seleziona l'ASCII (col dollaro al  posto  del
       simbolo  monetario),  ESC  ( M seleziona un insieme di caratteri per le
       lingue africane, ESC ( ! A seleziona l'insieme cubano, ecc. ecc.

       Un insieme da 96 caratteri viene denotato  come  l'insieme  Gn  da  una
       sequenza  di  escape  ESC  - xx (per G1), ESC . xx (per G2), o ESC / xx
       (per G3).  Per esempio, ESC - G seleziona l'alfabeto ebraico come G1.

       Un insieme multibyte viene denotato come insieme Gn da una sequenza  di
       escape  ESC $ xx o ESC $ ( xx (per G0), ESC $ ) xx (per G1), ESC $ * xx
       (per G2), ESC $ + xx (per G3).   Per  esempio,  ESC  $  (  C  seleziona
       l'insieme   di   caratteri   coreano  come  G0.   L'insieme  giapponese
       selezionato da ESC $ B ha una versione piu recente selezionata da ESC &
       @ ESC $ B.

       ISO  4873  stabilisce un uso piu restrittivo degli insiemi, in cui G0 e
       fisso (sempre ASCII), facendo  si  che  G1,  G2  e  G3  possano  essere
       invocati  solo  per  codici  in  cui  il  bit piu alto e impostato.  In
       particolare, ^N e ^O non vengono piu usati, ESC ( xx puo  essere  usato
       solo  con  xx=B,  e  ESC  )  xx,  ESC  * xx, ESC + xx sono equivalenti,
       rispettivamente, a ESC - xx, ESC . xx, ESC / xx.

VEDERE ANCHE

       console(4),     console_codes(4),      console_ioctl(4),      ascii(7),
       iso_8859_1(7), unicode(7), utf-8(7)

COLOPHON

       Questa  pagina  fa  parte  del  rilascio 2.80 del progetto man-pages di
       Linux.  Si puo trovare una descrizione del progetto, e informazioni  su
       come riportare bachi, presso http://www.kernel.org/doc/man-pages/.  Per
       la   traduzione   in   italiano   si    puo    fare    riferimento    a
       http://www.pluto.it/ildp/collaborare/