Di certo vi stupirà sapere che lo standard POSIX, e quindi anche Linux, prevede il supporto delle regole nazionali, che vogliono dire set di caratteri, modo di scrivere data, ora, numeri in generale e i messaggi di sistema. Non vi stupirà sapere che Linux supporta per ora solo il set di caratteri, mentre viene lasciato al futuro lo sviluppo del resto.
Governano la cosa delle variabili d'ambiente. In ordine:
(oppure LANG) E' la variabile ``generale'' del gruppo, serve a definire una regola generale (il paese) con cui poi assegnare le variabili che vengono sotto.
Influisce sulle regoole di parsing di alcune funzioni C.
Definisce il set di caratteri.
Definisce come devono essere scritti i numeri, ovvero quale, tra virgola e punto, è il separatore di decimali e migliaia e viceversa.
Definisce in che linguaggio devono essere scritti i messaggi di sistema.
Definisce come deve essere stampata l'ora corrente.
Per prima cosa l'ottavo bit deve sopravvivere nel kernel, quindi è buona cosa
dare questo comando (anche se stty(1) di default ha queste impostazioni,
controllare con stty -a
):
stty cs8 -istrip -parenb
Inoltre, visto il mio alto senso dello Stato, e vista la fiducia in un roseo
futuro, consiglio di aggiungere questo nel proprio
$(HOME)/.profile
o /etc/profile
per
sh-type shells:
export LANG=it export LC_CTYPE=iso-8859-1
Oppure se avete c-type shells:
setenv LANG it setenv LC_CTYPE iso-8859-1
Il primo serve per scaramanzia (sembra che XFree86 ne tenga conto...), mentre il secondo è una forzatura per evitare problemi.
Come sempre la man page di locale(7) è lettura molto consigliata,
come un giro per /var/X11R6/lib/locale
, che sembra essere l'unica
implementazione di locale oggi funzionante.
Tutti finito, direte voi. Beh, quasi...
Ora il problema è far capire alle applicazioni ``cattive'' che vogliamo avere i caratteri accentati. Questi hanno la interessante proprietà che sono lunghi 8 bit, mentre molti programmi ne considerano solo 7, perchè è da 7 bit il codice ASCII internazionalemte riconosciuto.
Se si vogliono usare nomi di files con lettere accentate è bene
aggiungere anche questo nel proprio $(HOME)/.inputrc
set meta-flag on set convert-meta off set output-meta on
Ed inoltre questi files devono poter essere correttamente visualizzati da ls(1), quindi aggiungiamo:
alias ls "ls -N"
sempre nel solito $(HOME)/.profile
o /etc/profile
.
Come sempre emacs è molto particolare. Avvisiamolo che vogliamo i caratteri accentati con :
(standard-display-european t) (set-input-mode nil nil 1) (require 'iso-syntax) (load-file "iso-insert.el") (define-key global-map [?\C-.] 8859-1-map)
Aggiunto al nostro bravo $(HOME)/.emacs
Inoltre, se si usa Emacs in un Xterm (NO XEmacs o LEmacs!!!), è anche
necessario aggiungere nel proprio $(HOME)/.XDefaults
:
XTerm*VT100.Translations: #override\n\ Ctrl <KeyPress> . : string("\0308")
Basta editare il file di configurazione /usr/lib/joe/joerc
di modo che
comprenda la riga (con il ``-'' sulla colonna 1):
-asis Characters 128 - 255 shown as-is
Aggiungere le seguenti righe nel file /var/lib/elm/elm.rc
o nel
proprio $(HOME)/.elm/elmrc
:
displaycharset = iso-8859-1 charset = iso-8859-1 textencoding = 8bit
Se stampate file DVI, PostScript o comunque in grafica, non ci sono problemi. Ci penserà il vostro programma per la stampa a convertire il vostro file nel formato matrice-di-punti più consono alla vostra stampante.
Ma se volete stampare in puro testo, senza formattazioni? Resta, soprattutto per le stampanti ad aghi, il metodo più veloce.Ma quanto è standard il set ISO-8859-1?
Nella notte dei tempi venne scelto per i PC un set di caratteri poco standard, che aveva il pregio di contenere tutta una serie di caratteri semigrafici molto belli da vedere, e molto utili per visualizzare finestrelle in testo. Questo set di caratteri venne chiamato ``Code Page 437'', meglio nota come CP437. Ora la stessa casa, nel dover internazionalizzare il suo prodotto, si accorge del mezzo sbaglio, e fa, ovviamente, mezza marcia indietro. Viene definito un set di caratteri alternativo al CP437, chiamato ``Code Page 850 o Latina 1'', meglio noto come CP850, che, con grande sfoggio di humor, definisce gli stessi caratteri dello standard ISO-8859-1, ovviamente sistemati in posti differenti così da mantenere una certa compatibilità con la CP437. Per fortuna, dopo anni di ripensamenti e notti insonni, la stessa casa lanciando sul mercato il suo nuovo prodotto adotta come standard ISO-8859-1 mettendo fine alla nostra storia.
Finita la nostra buffa storiella, possiamo passare a spiegare per bene come stanno le cose.
Innanzitutto ISO-8859-1 è il set di caratteri di Unix in generale, di Windows, Amiga, OS/2. Mancano all'appello il DOS e Macintosh. Sentitevi liberi quindi da qualsiasi ``sindrome da 8 bit'', e usate tranquillamente questo set di caratteri. Se dovete importare dei testi linux in Macintosh, semplicemente usate il filtro per ``puro testo windows'' o cose simili.
Se volete stampare puro testo con le accentate da Linux, a questo punto non vi resta che provare una delle soluzioni seguenti:
Per gli amanti delle curiosità, nella memoria caratteri della scheda video è definita, e non potrebbe essere altro, la CP437. Ci sono molti trucchetti per avere il set completo ISO-8859-1 in console, ma per adesso non ne ho trovato uno che funzioni completamente...
Date una occhiatina nelle directory /usr/lib/kbd/consolefont
e
/usr/lib/kbd/consoletrans
.
Ulteriori informazioni possono essere recuperate nei seguenti testi:
ftp://grasp.insa-lyon.fr/pub/faq/fr/accents, in Francese, ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/character-sets/iso-8859-1-faq in inglese e anche ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/FAQ-ISO-8859-1.