L’articolo di oggi è di Juan Valencia, originariamente pubblicato sul suo blog (disponibile anche in spagnolo), io l’ho trovato davvero interessante con articoli approfonditi riguardanti i comandi rsync, ssh e molti altri.
Quando si ricevono e si ha la necessità di gestire più file di testo che utilizzano caratteri che non sono naturali per la lingua inglese, si può incorrere nel problema che ha a che fare con le differenti codifiche dei caratteri. Ciò è particolarmente evidente nei siti web, in cui se il browser cerca di interpretare i file di testo con una codifica diversa dalla codifica effettiva, che il file sta usando, vedremo strani simboli nei punti in cui avrebbero dovuto esserci mostrati questi caratteri, ma non è limitato a siti web, qualsiasi programma che è fatto per funzionare con lingue diverse dall’inglese può presentare un problema simile se non viene gestito nella maniera giusta.
Nel caso degli archivi HTML, molte persone, e diversi programmi come default, optano per cambiare questi caratteri stranieri o con entità HTML (ad esempio á per avere un á) o una codifica ISO Latin-1 (ad esempio á per avere una á), ma la verità è che al giorno d’oggi ogni moderno (e non così moderno) browser è in grado di gestire con successo codifiche come iso-8859-1 o utf-8, tutto quello che dobbiamo fare è scegliere una codifica e l’uso che stessa codifica per tutti i file per evitare conflitti e specificare al browser che stiamo utilizzando tale codifica. Personalmente preferisco usare utf-8 in quanto lo considero un set di caratteri molto più flessibile e completo, e a meno che non sia richiesto ho standardizzato l’uso di utf-8 in tutti i miei progetti e nei miei sistemi in generale.
Per rilevare la codifica che viene utilizzata all’interno di un file, possiamo usare il comando ” file
“. Questo comando cerca di rilevare automaticamente la codifica che un file sta usando. Se non vengono rilevati caratteri speciali all’interno del file di testo, “ file
” ci dirà che la codifica è US-ASCII, e il nostro editor può utilizzare qualsiasi codifica di caratteri sia impostata per essere utilizzata di default. Ovviamente, ho impostato il mio editor per lavorare con utf-8 per default.
file --mime-encoding file.txt
Una volta che abbiamo la codifica del file, lo possiamo trasformare in una codifica con caratteri diversi se è necessario, utilizzando:
iconv --from-code=iso-8859-1 --to-code=utf-8 file.txt > file.txt.utf8
mv file.txt.utf8 file.txt
Cambiare la codifica dei caratteri di più file
Quando abbiamo bisogno di cambiare la codifica dei caratteri di un file, il più delle volte dobbiamo cambiare la codifica dei caratteri anche di altri file, per fare questa operazione su più file contemporaneamente possiamo utilizzare:
for old in *.txt;
do
iconv --from-code=iso-8859-1 --to-code=utf-8 $old > $old.utf8;
done
Una volta fatto questo, siamo in grado di rinominare tutti i file convertiti con il nome con cui essi sono stati generati, sostituendo l’originale con la versione ricodificata:
for old in *.utf8;
do
cp $old `basename $old .utf8`;
done
basename ci da il nome del file eccetto la parte “.utf8”. Se tutto è ok, siamo in grado di rimuovere i file temporanei che abbiamo creato.
rm *.utf8
Qua finisce l’articolo di Juan
Altri esempi con iconv:
find . -name "*.php" -exec iconv -f ISO-8859-1 -t UTF-8 {} -o ../newdir_utf8/{} \; |
Converte tutti i file.php da ISO-8859-1a utf-8 http://blog.ofirpicazo.com/linux/batch-convert-files-to-utf-8/
mysqldump --add-drop-table -uroot -p "DB_name" | replace CHARSET=latin1 CHARSET=utf8 | iconv -f latin1 -t utf8 | mysql -uroot -p "DB_name" |
Converte un database mysql da latin1 a utf8
Popular Posts:
- None Found
Excelent post!
Thank you!