Provided by: manpages-it_3.73-2_all bug

NOME

       charsets - gli standard degli insiemi di caratteri e internazionalizzazione

DESCRIZIONE

       Questa  pagina  di  manuale  fa  una  panoramica  sui  diversi standard per gli insiemi di
       caratteri e su come sono stati usati in Linux prima che Unicode  diventasse  onnipresente.
       Alcune  di queste informazioni sono ancora utili per le persone che lavorano con sistemi e
       documentazione datati.

       Gli standard discussi includono ASCII, GB 2312, ISO 8859, JIS, KOI8-R, KS, e Unicode.

       Verrà 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.

   ASCII
       ASCII (American Standard Code  For  Information  Interchange)  è  l'insieme  di  caratteri
       originale  a 7 bit, creato in origine per l'inglese americano; è noto anche come US-ASCII.
       Viene ora descritto dallo standard  ISO 646:1991 IRV (International Reference Version).

       Sono apparse diverse 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 gli insiemi di caratteri non siano veri
       insiemi di ASCII.

       As Unicode, when using UTF-8, is ASCII-compatible, plain ASCII text still renders properly
       on modern UTF-8 using systems.

   ISO 8859
       ISO  8859  è  una serie di 15 insiemi di caratteri a 8 bit che contengono ASCII nella metà
       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 più importante è ISO 8859-1 ("Latin Alphabet No .1" / Latin-1).  È adottato
       diffusamente e supportato da diversi sistemi, e lo si  sta  gradualmente  sostituendo  con
       Unicode.

       Il  supporto  di  console  per  gli altri insiemi di carattere 8859 è disponibile in Linux
       grazie a utilità in modalità utente (come setfont(8)) che modificano  le  associazioni  di
       tasti 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,
              basco,  danese,  inglese,  faeroese,  galiziano,  irlandese,  islandese,  italiano,
              norvegese,  portoghese,  spagnolo  e  svedese.   La  mancanza  dei   logotipi   ¿/¿
              (olandese),   ¿  (francese)  e  virgolette  ¿vecchio  stile¿  (tedesco)  è ritenuto
              tollerabile.

       8859-2 (Latin-2)
              Latin-2 supporta molte lingue dell'Europa centrale e orientale a  caratteri  latini
              come  bosniaco,  ceco,  croato,  polacco,  slovacco,  sloveno, tedesco e ungherese.
              Sostituire il rumeno  ¿/¿ con ¿/¿ è ritenuto tollerabile.

       8859-3 (Latin-3)
              Latin-3 è stato creato per esperanto, maltese e turco; per il  turco  è  stato  poi
              soppiantato da 8859-9.

       8859-4 (Latin-4)
              Latin-4 ha introducotto lettere per le lingue nord-occidentali come estone, lettone
              e lituano, ma è stato soppiantato da 8859-10 e 8859-13.

       8859-5 Lettere cirilliche  per  bulgaro,  bellorusso,  macedone,  russo,  serbo  e  Qquasi
              completamente)  ucraino.   Non  è  mai  stato  usato  molto;  vedere  più avanti la
              discussione su KOI8-R.

       8859-6 È stato creato per l'arabo.  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 È stato creato per il greco moderno nel 1987, e aggiornato nel 2003.

       8859-8 Supporta l'ebraico moderno senza  niqud  (segni  di  punteggiatura).   Niqud  e  lo
              sviluppo  completo  dell'ebraico  della Bibbia vanno al di là degli scopi di questo
              insieme di caratteri.

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

       8859-10 (Latin-6)
              Latin-6  ha  aggiunto le inuit (groenlandese) e sami (lappone) mancanti in Latin-4,
              così da coprire l'intera area nordica.

       8859-11
              Supporta l'alfabeto thai ed è quasi era identica allo standard TIS-620.

       8859-12
              Questo insieme non esiste.

       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  celtici,  che  comprende  l'irlandese  antico,  la  lingua
              dell'isola di Man, il gaelico,  il  gallese,  la  lingua  della  Cornovaglia  e  il
              bretone.

       8859-15 (Latin-9)
              Latin-9  è  simile al Latin-1 comunemente usato, ma sostituisce alcune simboli meno
              comuni con il simbolo dell'Euro e alcune lettere francesi e finlandesi  assenti  in
              Latin-1.

       8859-16 (Latin-10)
              Questo  insieme  comprende molte lingue del sud-est europeo, e soprattutto supporta
              il rumeno in modo più completo del Latin-2.

   KOI8-R / KOI8-U
       KOI8-R è un insieme di caratteri non ISO molto diffuso in Russia prima  dell'Unicode.   La
       metà  bassa è ASCII; la metà alta contiene un insieme di caratteri cirillici, concepito un
       po' meglio di quello di ISO 8859-5.  KOI8-U, basato su KOI8-R, ha un miglior supporto  per
       l'ucraino.  Nessuno di questi insiemi è compatibile con ISO-2022, diversamente dalla serie
       ISO-8859.

       Il supporto di console per KOI8-R è disponibile in Linux grazie a utilità 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.

   GB 2312
       GB 2312 è 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.   EUC-CN  è  la  codifica  più
       importante  per Linux e include ASCII e GB 2312.  Si noti che EUC-CN spesso è chiamato GB,
       GB 2312 o CN-GB.

   Big5
       Big5 è un insieme di caratteri popolare in Taiwan  che  esprime  il  cinese  tradizionale.
       (Big5  è  sia  un insieme di caratteri che una codifica).  È un super-insieme di 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 è conforme a ISO 2022.

   JIS X 0208s
       JIS X 0208 è 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 è il più importante.  I caratteri vengono mappati in una matrice  94x94  a
       due  byte,  e ogni byte è compreso nell'intervallo 0x21-0x7e.  Si noti che JIS X 0208 è un
       insieme di caratteri, non una codifica: questo significa che JIS X  0208  non  può  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 è la  codifica  più  importante  sotto  Linux,  e
       include ASCII e JIS X 0208.  In questa codifica i caratteri JIS X 0208 vengono espressi in
       due byte, ognuno dei quali è il codice JIS X 0208 più 0x80.

   KS X 1001
       KS X 1001 è 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  è
       la  codifica  più  importante  sotto  Linux,  e include ASCII E KS X 1001.  KS C 5601 è il
       vecchio nome di KS X 1001.

   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  è  (parzialmente)  supportato  dal kernel di Linux e da
       xterm(1).  Sono state  definite  diverse  codifiche  di  caratteri  basate  su  ISO  2002,
       specialmente per il giapponese.

       Ci  sono  quattro  insiemi  di  caratteri grafici, chiamati G0, G1, G2 e G3: uno di loro è
       l'insieme di caratteri attuale per i codici con bit più alto zero (inizialmente G0), e uno
       di  loro è l'insieme attuale per i codici con bit più alto uno (inizialmente G1).  Ciascun
       insieme di caratteri grafici ha 94 o 96 caratteri ed è 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 sì che  l'insieme  Gn  sia  quello  attuale  per
       codici  con bit più alto zero.  La funzione LSnR fa sì che l'insieme Gn sia quello attuale
       per codici con bit più alto uno.  La funzione SSn fa sì che l'insieme Gn  (n=2  o  3)  sia
       quello  attuale  per il solo carattere successivo (qualsiasi sia il valore del suo bit più
       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 è 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 UK (con la sterlina al posto del simbolo numerico), 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, e  così
       via.

       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 più recente selezionata da ESC & @ ESC $ B.

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

   TIS-620
       TIS 620 è un insieme nazionale di caratteri standard tailandesi, ed è un super-insieme  di
       ASCII.  Come le serie ISO 8859, i caratteri Thai sono mappati in 0xa1-0xfe.

   UNICODE
       Unicode  (ISO  10646)  è  uno  standard  il cui scopo è rappresentare senza ambiguità 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 è 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).

       Linux rappresenta Unicode tramite il "Formato di trasferimento Unicode" (Unicode  Transfer
       Format)  a  8  bit (UTF-8).  UTF-8 è una codifica di Unicode a lunghezza variabile.  Usa 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.   Perciò,
       ASCII  rimane  invariato  in  UTF-8  e  coloro  che  usano  solo  ASCII non notano nessuna
       differenza: né nel codice, né nella dimensione del file.

       Un byte 110xxxxx è l'inizio di una codifica a due byte, dove  110xxxxx  10yyyyyy  sta  per
       00000xxx  xxyyyyyy.  Un byte 1110xxxx è 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  la  maggior  parte  dei  testi  codificati  con insiemi di caratteri ISO-8859, questo
       significa che i caratteri al di fuori dell'ASCII sono ora codificati con  due  byte.   Ciò
       tende ad espandere un file ordinario di testo dell'uno o due per cento.  Per i testi russi
       o greci, espande file ordinari di testo del 100%, dato che il testo  in  queste  lingue  è
       quasi  tutto  al  di  fuori  dell'ASCII.  Per gli utilizzatori giapponesi significa che la
       codifica a 16 bit oggi comunemente usata userà tre byte.  Anche se ci  sono  algoritmi  di
       conversione  da  alcuni  insiemi  di  caratteri  (specialmente  ISO-8859-1)  a Unicode, la
       conversione generale  richiede  l'uso  di  tabelle  di  conversione,  che  possono  essere
       piuttosto grandi per codifiche a 16 bit.

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

       Poiché ASCII e, in particolare, NUL e '/' sono invariati, il kernel non si rende conto che
       si sta usando UTF-8.  Non gli interessa il significato dei byte di cui si occupa.

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

VEDERE ANCHE

       iconv(1), console(4), ascii(7), iso_8859-1(7), unicode(7), utf-8(7)

COLOPHON

       Questa pagina fa parte del rilascio 3.73 del progetto Linux  man-pages.   Una  descrizione
       del  progetto,  le  istruzioni  per  la  segnalazione degli errori, e l'ultima versione di
       questa pagina si trova su http://www.kernel.org/doc/man-pages/.

       La versione italiana fa parte del pacchetto man-pages-it v. 3.73, a cura di: ILDP "Italian
       Linux Documentation Project" http://www.pluto.it/ildp
       Per     la     traduzione     in     italiano     si     può     fare     riferimento    a
       http://www.pluto.it/ildp/collaborare/
       Segnalare eventuali errori di traduzione a ildp@pluto.it