Visualizzazione post con etichetta encoding. Mostra tutti i post
Visualizzazione post con etichetta encoding. Mostra tutti i post

giovedì 9 dicembre 2010

Problemi di encoding UTF-8 su script Perl

Ho uno script che legge un file CSV, fa alcune elaborazioni e poi genera un nuovo file CSV su standard output.

Problema: se il csv sorgente contiene dei caratteri estesi in encoding utf8 (ad esempio le lettere tedesche che l'umlaut) mi trovavo nell'output degli errori:
Cannot parse:__contenuto_della_riga_del_csv__
Soluzione: dire a Perl che quello che sta leggendo e' un file utf8, trasformando la riga:

 open (CSV, '<:', $file)
in:

 open (CSV, '<:utf8', $file)
Questo ha fatto sparire i warning relativi al parsing del file, pero' l'output risultava errato con i caratteri estesi sostituiti da orrende sequenze e codici.

Il nuovo problema era che l'output veniva encodato in ISO-8859
Per forzare le scritture su standard output in UTF8, bisogna inserire a inizio script la riga:
binmode STDOUT, ":utf8";




lunedì 13 settembre 2010

Aprire un file con VIM e salvarlo con un diverso encoding

Assumiamo per esempio di avere un file (file.txt) con encoding UTF-16 e di volerlo convertire in UTF-8.


Apriamo il file con il comando:
vim file.txt
salviamo il file con il comando:
:write ++enc=utf-8
o, se preferiamo salvarlo con un altro nome:
:write ++enc=utf-8 file_utf8.txt


Lo stesso risultato puo' essere ottenuto da linea di comando:
iconv -f utf-16 -t utf-8 file.txt > file_utf8.txt