[Gfoss] postgresql e l'utf8... una lotta

Niccolo Rigacci niccolo a faunalia.it
Mar 6 Ott 2009 21:18:01 CEST


On Tue, Oct 06, 2009 at 08:30:07PM +0200, G. Allegri wrote:
> 
> La macchina è localizzata it_IT.UTF-8, e 
> postgresql di default crea i db in UTF8. Adesso io devo 
> inserire un po' di dati in Postgis e che, essendo toponimi 
> italiani, contengono un sacco di accenti. Vado di shp2pgsql e 
> 'file -bi' mi conferma che l'encoding è iso-8859-1 (ovvero 
> latin1, per PG).

Ti consiglio di fare "La Cosa Giusta"(tm), cioè usa sempre e 
comunque UTF-8: imposta il locale della tua macchina su 
it_UT a UTF-8 e crea il database in UTF8.

Se poi devi caricare dei dati che sono iso-8859-1 li converti 
prima con iconv con qualcosa del genere:

cat pippo.sql | iconv -f ISO-8859-1 -t UTF-8 > pippo2.sql

Controlla le opzioni di iconv, perché può comportarsi in diversi 
modi: fermarsi in caso di errore, rimuovere i caratteri errati, 
ecc.

Tieni presente che spesso i dati di origine (per esempio quelli 
ISTAT) hanno encoding misti: cioè le lettere accentate a volte 
sono in latin altre volte in utf-8. Il che è non depone a favore 
della professionalità di chi ha curato il dato e ti costringe ad 
un lavoro di pre-processing manuale.

-- 
Niccolo Rigacci
Firenze - Italy


Maggiori informazioni sulla lista Gfoss