Provided by: manpages-it_4.23.1-1_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/IEC 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/IEC 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/IEC 8859
       ISO/IEC 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 160–255.

       Di questi, il più importante è ISO/IEC 8859-1 ("Latin Alphabet No. 1" / Latin-1). È adottato diffusamente
       e  supportato  da  diversi  sistemi,  e  lo  si  sta gradualmente sostituendo con Unicode. I caratteri di
       ISO/IEC 8859-1 sono anche i primi 256 caratteri di Unicode.

       Il supporto di console per gli altri insiemi di carattere ISO/IEC 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 di caratteri:

       ISO/IEC 8859-1 (Latin-1)
              Latin-1 copre molte delle lingue europee  occidentali,  come  albanese,  basco,  danese,  inglese,
              faeroese, galiziano, irlandese, islandese, italiano, norvegese, portoghese, spagnolo e svedese. La
              mancanza delle legature IJ/ij (olandese), œ (francese) e  virgolette  „vecchio  stile“  (tedesco)  è
              ritenuta tollerabile.

       ISO/IEC 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.

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

       ISO/IEC 8859-4 (Latin-4)
              Latin-4 ha introdotto lettere per le lingue nord europee come estone,  lettone  e  lituano,  ma  è
              stato soppiantato da ISO/IEC 8859-10 e ISO/IEC 8859-13.

       ISO/IEC 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.

       ISO/IEC 8859-6
              È stato creato per l'arabo. La tabella di glifi ISO/IEC 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.

       ISO/IEC 8859-7
              È stato creato per il greco moderno nel 1987, e aggiornato nel 2003.

       ISO/IEC 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.

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

       ISO/IEC 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.

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

       ISO/IEC 8859-12
              Questo insieme di caratteri non esiste.

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

       ISO/IEC 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.

       ISO/IEC 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.

       ISO/IEC 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/IEC 8859-5. KOI8-U, basato su KOI8-R, ha un miglior supporto per l'ucraino. Nessuno di questi insiemi
       è compatibile con ISO/IEC 2022, diversamente dalla serie ISO/IEC 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 era 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 erano largamente usati a Taiwan e Hong Kong. Non è conforme a ISO/IEC 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/IEC 2022-JP. EUC-JP è la codifica più importante sotto Linux, e include  ASCII  e
       JIS  X  0208.  In JIS X 0208 i caratteri 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/IEC 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/IEC 2022 e ISO/IEC 4873
       Gli  standard  ISO/IEC 2022  e ISO/IEC 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/IEC 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/IEC 2375 International Register of Coded Character Sets. Per esempio, ESC  (  @  seleziona
       l'insieme  di  caratteri ISO/IEC 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/IEC 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/IEC 8859, i caratteri Thai sono mappati in 0xa1–0xfe.

   Unicode
       Unicode (ISO/IEC 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/IEC 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/IEC 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/IEC 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)

TRADUZIONE

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

       Questa  traduzione  è  documentazione  libera;  leggere  la  GNU  General  Public  License   Versione   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.