Provided by: manpages-it_4.13-4_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.

       Poiché Unicode, quando si usa UTF-8, è compatibile con ASCII, un testo semplice in  formato  ASCII  viene
       ugualmente interpretato correttamente sui sistemi moderni che usano UTF-8.

   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  IJ/ij  (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  (quasi  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 0208
       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 or LS1), ^O (SI or 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), ascii(7), iso_8859-1(7), unicode(7), utf-8(7)

COLOPHON

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

TRADUZIONE

       La   traduzione   italiana   di   questa   pagina   di  manuale  è  stata  creata  da  Ottavio  G.  Rizzo
       <rizzo@pluto.linux.it>, Elisabetta Galli <lab@kkk.it> e Marco Curreli <marcocurreli@tiscali.it>

       Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 o  successiva
       per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

       Per  segnalare  errori  nella  traduzione  di  questa  pagina  di  manuale  inviare un messaggio a pluto-
       ildp@lists.pluto.it.

Linux                                            13 agosto 2020                                      CHARSETS(7)