[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux_var] Verificare codifica file e cambiarla
Condivido una cosa che è servita a me, spiegandola in modo che sia
comprensibile anche a chi ha meno dimestichezza con certi meccanismi di
Linux.
Nei miei sistemi non avevo impostato l'utf-8. Ho deciso di farlo, però
inevitabilmente poi mi sono trovato con alcuni file che avevano un'altra
codifica, vedendoli con i classici caratteri strani.
Linux offre delle soluzioni molto semplici e già perfettamente integrate
per questo problema.
Per verificare la codifica di un file abbiamo il classico comando
"file", con l'opzione "--mime-encoding".
Un esempio su di un file di testo che chiameremo "prova-codifiche.txt".
Il testo contenuto sarà "Prova codifica caratteri è ò à ù ì". I
caratteri accentati verranno visualizzati in modo errato nel caso che il
nostro sistema sia impostato su "utf-8" e se il file sarà codificato ad
esempio in "iso-8859-1".
Infatti se diamo un:
$ cat prova-codifiche.txt
(attenzione: il carattere "$" è il prompt dei comandi!)
otterremo:
Prova codifica caratteri � � � �
(spero che nella vostra lettura si vedano i punti interrogativi al posto
dei 5 caratteri accentati)
Se daremo un:
$ file --mime-encoding prova-codifiche.txt
il risultato sarà:
prova-codifiche.txt: iso-8859-1
Ora, se vogliamo modificarne la codifica dovremo farlo con un piccolo
giro. Useremo un altro tool nativo di linux: "iconv".
Come prima cosa dovremo ottenere un altro file dove verrà copiato il
contenuto di questo ma con la codifica che vogliamo noi (ATTENZIONE: non
fatelo sullo stesso file! Ma nemmeno usando il nome di un file esistente
altrimenti con la redirezione ">" lo sovrascriverete distruggendone il
contenuto!). In questo caso la nuova codifica sarà "utf-8":
$ iconv -f iso-8859-1 -t utf-8 prova-codifiche.txt >
prova-codifiche-utf-8.txt
(il file in cui verrà copiato il contenuto l'ho chiamato
"prova-codifiche-utf-8.txt", ma potete chiamarlo come volete, basta che
non sia il nome del file originale e, RIPETO, nemmeno di un file
esistente altrimenti ne distruggerete il contenuto!)
Dopo potremo decidere di sovrascrivere il file originale con quello
codificato nella nuova codifica:
$ mv prova-codifiche-utf-8.txt prova-codifiche.txt
Se ora daremo di nuovo un:
$ file --mime-encoding prova-codifiche.txt
otterremo:
prova-codifiche.txt: utf-8
e se daremo un cat:
$ cat prova-codifica.txt
il risultato sarà:
Prova codifica caratteri è ò à ù ì
I caratteri accentati saranno visualizzati correttamente nel nostro
sistema impostato su utf-8.
Un'ultima cosa, tutto questo volendo si potrebbe includere in uno script
che, combinando il comando "find", potrebbe convertire tutti i file
presenti in una o più directory, o in tutto il computer, da altre
codifiche a "utf-8", o a quello che ci interessa.
Spero questa miniguida sia utile a qualcuno.
Saluti! :)
Gigi
PS: che dite, la metto sul sito?
_______________________________________________
Talking mailing list
Talking@ml.linuxvar.it
http://ml.linuxvar.it/cgi-bin/mailman/listinfo/talking