Pagine di manuale localizzate e unicode UTF8
Inviato: lun 3 feb 2020, 14:57
Accenno solo all'antefatto: volevo scrivermi qualche appunto accessibile da terminale. Un banale file di testo semplice andava benissimo. Poi ho pensato, perché non formattare il tutto come se fosse una pagina di manuale? E qua cominciano i problemi: infatti ho il terminale bash localizzato in it_IT.UTF8. E anche vim crea file codificati in UTF8. Mi sono così presto resto conto che lanciando:
Si ottiene un testo formattato in modo molto leggibile, come una pagina di manuale, ma ad esempio le lettere accentate sono rappresentate da strani caratteri sballati tipo "A maiuscole" con sopra qualche simbolino stano. Insomma non ci siamo.
Sono riuscito a visualizzare in modo quasi corretto il mio testo col comando groff:
In questo modo funzionano le lettere accentate, ma non funziona l'adattamento alla larghezza della finestra.
L'opzione -k di groff in pratica gli ordina di scegliere la codifica del testo in input da formattare, secondo un riconoscimento automatico che a quanto pare funziona e si basa sul tool "preconvert": in questo modo groff capisce che il testo in ingresso è in utf8 e lo tratta in modo corretto rendendolo poi in output con codifica utf8. Siccome poi anche il terminale è localizzato in utf8, alla fine le accentate si leggono correttamente.
Ravanando tra le pagine di manuale in italiano, ho "scoperto" che ve ne sono alcune codificate in ASCII, altre in ISO-8859, altre ancora in UTF8.
Esempi:
- la pagina del comando man(1) è in ISO-8859 (v.di /usr/man/it/man1.gz)
Notare che viene visualizzata correttamente (nonostante il terminale da cui la guardo è localizzato in utf8)
- la pagina del comando groupadd(8) è in ASCII (v.di sempre /usr/man/it/*)
Notare anche in questo caso che le accentate si vedono bene.
- la pagina di slackpkg(8) è in UTF8
Provate un po' a lanciare man slackpkg: a me non visualizza correttamente le accentate. Riporto un pezzetto:
In sintesi, al di là del mio velleitario testo di appunti da visualizzare con "man", capita che in generale man non riesce a rendere come dovrebbe le pagine di manuale codificate in partenza in UTF8.
È un problema risaputo? In rete ho trovato qualcosa ma sembra che in quei casi il problema fosse la codifica del terminale che non era impostata ad utf8.
Nel mio caso ho la seguente localizzazione da shell:
Domande:
- potreste fare un test lanciando il man di slackpkg e riportare se le accentate vengono visualizzate in modo corretto?
- potreste riportare anche il vostro output del comando "locale"?
- avete qualche idea di come si potrebbe risolvere questo inghippo?
Codice: Seleziona tutto
man ./appuntiSono riuscito a visualizzare in modo quasi corretto il mio testo col comando groff:
Codice: Seleziona tutto
groff -k -m mandoc -Tutf8 ./appunti
L'opzione -k di groff in pratica gli ordina di scegliere la codifica del testo in input da formattare, secondo un riconoscimento automatico che a quanto pare funziona e si basa sul tool "preconvert": in questo modo groff capisce che il testo in ingresso è in utf8 e lo tratta in modo corretto rendendolo poi in output con codifica utf8. Siccome poi anche il terminale è localizzato in utf8, alla fine le accentate si leggono correttamente.
Ravanando tra le pagine di manuale in italiano, ho "scoperto" che ve ne sono alcune codificate in ASCII, altre in ISO-8859, altre ancora in UTF8.
Esempi:
- la pagina del comando man(1) è in ISO-8859 (v.di /usr/man/it/man1.gz)
Codice: Seleziona tutto
file man.1
man.1: troff or preprocessor input, ISO-8859 text, with CRLF, LF line terminators
- la pagina del comando groupadd(8) è in ASCII (v.di sempre /usr/man/it/*)
Codice: Seleziona tutto
$ file groupadd.8
groupadd.8: troff or preprocessor input, ASCII text- la pagina di slackpkg(8) è in UTF8
Codice: Seleziona tutto
$ file slackpkg.8
slackpkg.8: troff or preprocessor input, UTF-8 Unicode text
Codice: Seleziona tutto
DESCRIZIONE
Slackpkg è uno strumento per tutti quelli che vogliono installare e aggiornare facilmente i pacchetti via rete. Con slackpkg, puoi
avere un'installazione minimale di Slackware Linux e installare/aggiornare solo quei pacchetti di cui hai bisogno.
Non è necessario configurare NFS o creare decine di CD per i tuoi computer; quello che serve è scrivere un comando e tutti gli ultimi
pacchetti di Slackware saranno nelle tue dita.
È un problema risaputo? In rete ho trovato qualcosa ma sembra che in quei casi il problema fosse la codifica del terminale che non era impostata ad utf8.
Nel mio caso ho la seguente localizzazione da shell:
Codice: Seleziona tutto
$ locale
LANG=it_IT.UTF-8
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC="it_IT.UTF-8"
LC_TIME="it_IT.UTF-8"
LC_COLLATE=C
LC_MONETARY="it_IT.UTF-8"
LC_MESSAGES="it_IT.UTF-8"
LC_PAPER="it_IT.UTF-8"
LC_NAME="it_IT.UTF-8"
LC_ADDRESS="it_IT.UTF-8"
LC_TELEPHONE="it_IT.UTF-8"
LC_MEASUREMENT="it_IT.UTF-8"
LC_IDENTIFICATION="it_IT.UTF-8"
LC_ALL=
- potreste fare un test lanciando il man di slackpkg e riportare se le accentate vengono visualizzate in modo corretto?
- potreste riportare anche il vostro output del comando "locale"?
- avete qualche idea di come si potrebbe risolvere questo inghippo?