Visualizzazione post con etichetta utf8. Mostra tutti i post
Visualizzazione post con etichetta utf8. 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

giovedì 8 aprile 2010

Cambiare il character set in un database MySQL

1. Aprire l'interfaccia phpMyAdmin
2. Click sul nome del database da modificare

3. Click su SQL
4. Inserire questa query per modificare il character set in utf-8 (sostituire [nome_database] con il nome del db da modificare:

ALTER DATABASE [nome_database] CHARACTER SET utf8 COLLATE utf8_general_ci;