postgresql e l'utf8... una lotta

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

postgresql e l'utf8... una lotta

giohappy
Ciao a tutti,
è tanto che non faccio una domanda, ma stavolta avrei proprio bisogno di un lume su Postgresql...
Era tanto che non ne mettevo su uno da zero, ed ho visto che la gestione della localizzazione e dei charset si è fatta molto stringente dalla versione 8.3. Adesso il charset del db dev'essere corrispondente al locale della macchina, altrimenti createdb ti risponde picche. Ho trovato conferme sulla ml di PG.

Dunque, mi hanno passato una Ubuntu 9.04 su cui mettere in piedi un server. 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).
Mi sono preoccupato allora di settare il "client_encoding='latin1' " prima di lanciare l'.sql da pgsql.
NIENTE DA FARE.
PG non ne vuole sapere di digerire quegli accenti, e non prova nemmeno a cambiarli. Semplicemente si piglia le righe che gli piacciono e il resto me lo rende indietro senza batter ciglio.

Domanda a tutti i PGisti di gfoss: che devo fare?!!! Esperienze simili da condividere? Immagino proprio di sì... tra l'altro tra i dataset da caricare ci sono glli shape istat2008, che molti di voi avranno già maneggiato...

In attesa di eventuali, confortevoli, risposte
vi saluto.
firmato: un uomo risucchiato da un elefante...



_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: postgresql e l'utf8... una lotta

luca.casagrande@gmail.com
Il giorno mar, 06/10/2009 alle 20.30 +0200, G. Allegri ha scritto:

> Ciao a tutti,
> è tanto che non faccio una domanda, ma stavolta avrei proprio bisogno
> di un lume su Postgresql...
> Era tanto che non ne mettevo su uno da zero, ed ho visto che la
> gestione della localizzazione e dei charset si è fatta molto
> stringente dalla versione 8.3. Adesso il charset del db dev'essere
> corrispondente al locale della macchina, altrimenti createdb ti
> risponde picche. Ho trovato conferme sulla ml di PG.
>
> Dunque, mi hanno passato una Ubuntu 9.04 su cui mettere in piedi un
> server. 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).
> Mi sono preoccupato allora di settare il "client_encoding='latin1' "
> prima di lanciare l'.sql da pgsql.
> NIENTE DA FARE.
> PG non ne vuole sapere di digerire quegli accenti, e non prova nemmeno
> a cambiarli. Semplicemente si piglia le righe che gli piacciono e il
> resto me lo rende indietro senza batter ciglio.
>
> Domanda a tutti i PGisti di gfoss: che devo fare?!!! Esperienze simili
> da condividere? Immagino proprio di sì... tra l'altro tra i dataset da
> caricare ci sono glli shape istat2008, che molti di voi avranno già
> maneggiato...
>
> In attesa di eventuali, confortevoli, risposte
> vi saluto.
> firmato: un uomo risucchiato da un elefante...

Ciao Giovanni,
io ho sempre lavorato impostando l'encoding al momento della creazione
del database usando la flag -E

Spero ti possa essere utile

A presto
Luca

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: postgresql e l'utf8... una lotta

giohappy
Ciao Luca. Il problema è proprio lì. Anch'io facevo in quel modo, ma con la 8.3 mi dà errore, perché l'encoding non matcha con i locales... E sinceramente vorrei evitare di dover mettere mano alla localizzazione della macchina solo per caricare dei dati in postgis! :(

Il giorno 06 ottobre 2009 20.57, Luca Casagrande <[hidden email]> ha scritto:
Il giorno mar, 06/10/2009 alle 20.30 +0200, G. Allegri ha scritto:
> Ciao a tutti,
> è tanto che non faccio una domanda, ma stavolta avrei proprio bisogno
> di un lume su Postgresql...
> Era tanto che non ne mettevo su uno da zero, ed ho visto che la
> gestione della localizzazione e dei charset si è fatta molto
> stringente dalla versione 8.3. Adesso il charset del db dev'essere
> corrispondente al locale della macchina, altrimenti createdb ti
> risponde picche. Ho trovato conferme sulla ml di PG.
>
> Dunque, mi hanno passato una Ubuntu 9.04 su cui mettere in piedi un
> server. 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).
> Mi sono preoccupato allora di settare il "client_encoding='latin1' "
> prima di lanciare l'.sql da pgsql.
> NIENTE DA FARE.
> PG non ne vuole sapere di digerire quegli accenti, e non prova nemmeno
> a cambiarli. Semplicemente si piglia le righe che gli piacciono e il
> resto me lo rende indietro senza batter ciglio.
>
> Domanda a tutti i PGisti di gfoss: che devo fare?!!! Esperienze simili
> da condividere? Immagino proprio di sì... tra l'altro tra i dataset da
> caricare ci sono glli shape istat2008, che molti di voi avranno già
> maneggiato...
>
> In attesa di eventuali, confortevoli, risposte
> vi saluto.
> firmato: un uomo risucchiato da un elefante...

Ciao Giovanni,
io ho sempre lavorato impostando l'encoding al momento della creazione
del database usando la flag -E

Spero ti possa essere utile

A presto
Luca



_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: postgresql e l'utf8... una lotta

Niccolo Rigacci-4
In reply to this post by giohappy
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@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
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: postgresql e l'utf8... una lotta

giohappy
Ciao Niccolò.
Il locale E' it_IT.UTF_8, e il db UTF8
Avevo fatto proprio come dici tu, ma iconv mi sbatte fuori solo mezza roba. Sospetto che il problema sia proprio il mischione di encoding che hanno fatto....
Ne traggo l'amara conclusione che toccherà mettersi con santa pazienza a sistemare i dati di partenza a mano!

Il giorno 06 ottobre 2009 21.18, Niccolo Rigacci <[hidden email]> ha scritto:
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@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
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: postgresql e l'utf8... una lotta

Sandro Santilli
In reply to this post by giohappy
On Tue, Oct 06, 2009 at 08:30:07PM +0200, G. Allegri wrote:

> Vado di shp2pgsql e 'file -bi' mi conferma che l'encoding è iso-8859-1
> (ovvero latin1, per PG).
> Mi sono preoccupato allora di settare il "client_encoding='latin1' " prima
> di lanciare l'.sql da pgsql.

prova a passare -W Latin1 a shp2pgsql

--strk;

 Free GIS & Flash consultant/developer      ()  ASCII Ribbon Campaign
 http://foo.keybit.net/~strk/services.html  /\  Keep it simple!
_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: postgresql e l'utf8... una lotta

giohappy
non ho elencato tutte le prove che ho fatto, ma c'era anche questa... e stranamente non gli è piaciuta. Adesso (grazie a Luca) provo con una versione convertita ad UTF con gedit...

giova

Il giorno 07 ottobre 2009 09.58, strk <[hidden email]> ha scritto:
On Tue, Oct 06, 2009 at 08:30:07PM +0200, G. Allegri wrote:

> Vado di shp2pgsql e 'file -bi' mi conferma che l'encoding è iso-8859-1
> (ovvero latin1, per PG).
> Mi sono preoccupato allora di settare il "client_encoding='latin1' " prima
> di lanciare l'.sql da pgsql.

prova a passare -W Latin1 a shp2pgsql

--strk;

 Free GIS & Flash consultant/developer      ()  ASCII Ribbon Campaign
 http://foo.keybit.net/~strk/services.html  /\  Keep it simple!


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: postgresql e l'utf8... una lotta

Vito Meuli
In reply to this post by giohappy
Ciao!
Non sono un guru di Postgres, ti dico come l'ho risolto io.
Il problema è che il cluster di Postgres, che è la megastruttura di cartelle e
file che lui usa per memorizzare i dati sul disco, il cluster è stato creato
con un certo locale, UTF8 (ora i singoli termini non me li ricordo in modo
preciso). Lo crea Ubuntu all'installazione del pacchetto.
Con quel cluster non hai chance: puoi solo creare database UTF8.

Se vuoi avere la possibilità di creare database LATIN1, LATIN9, o tutti quelli
che vuoi, scegliendo al momento di creare il database, allora non c'è
alternativa che abbandonare quel cluster e crearne un altro (con qualcosa del
tipo:
/usr/lib/postgresql/8.3/bin/initdb --locale=C -D /usr/local/pgsql/data/

Una volta fatto questo, puoi scegliere di volta in volta, invece con --
locale=...UTF8... (non mi ricordo com'è esattamente) non hai chance, solo UTF8
per tutti.

Il manuale ha un paio di pagine esaustive sull'argomento:
http://www.postgresql.org/docs/8.3/static/multibyte.html

I miei due centesimi.

Ciao,
Vito Meuli

On Tuesday 06 October 2009 20:30:07 G. Allegri wrote:

> Ciao a tutti,
> è tanto che non faccio una domanda, ma stavolta avrei proprio bisogno di un
> lume su Postgresql...
> Era tanto che non ne mettevo su uno da zero, ed ho visto che la gestione
> della localizzazione e dei charset si è fatta molto stringente dalla
> versione 8.3. Adesso il charset del db dev'essere corrispondente al locale
> della macchina, altrimenti createdb ti risponde picche. Ho trovato conferme
> sulla ml di PG.
>
> Dunque, mi hanno passato una Ubuntu 9.04 su cui mettere in piedi un server.
> 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).
> Mi sono preoccupato allora di settare il "client_encoding='latin1' " prima
> di lanciare l'.sql da pgsql.
> NIENTE DA FARE.
> PG non ne vuole sapere di digerire quegli accenti, e non prova nemmeno a
> cambiarli. Semplicemente si piglia le righe che gli piacciono e il resto me
> lo rende indietro senza batter ciglio.
>
> Domanda a tutti i PGisti di gfoss: che devo fare?!!! Esperienze simili da
> condividere? Immagino proprio di sì... tra l'altro tra i dataset da
> caricare ci sono glli shape istat2008, che molti di voi avranno già
> maneggiato...
>
> In attesa di eventuali, confortevoli, risposte
> vi saluto.
> firmato: un uomo risucchiato da un elefante...

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: postgresql e l'utf8... una lotta

giohappy
grazie Vito. Mi sa che farò così, perché per adesso nessuna soluzione (stranamente) ha funzionato. Nemmeno la conversione a UTF8 con gedit (grazie lo stesso Luca!).

giovanni


Il giorno 07 ottobre 2009 11.42, Vito Meuli <[hidden email]> ha scritto:
Ciao!
Non sono un guru di Postgres, ti dico come l'ho risolto io.
Il problema è che il cluster di Postgres, che è la megastruttura di cartelle e
file che lui usa per memorizzare i dati sul disco, il cluster è stato creato
con un certo locale, UTF8 (ora i singoli termini non me li ricordo in modo
preciso). Lo crea Ubuntu all'installazione del pacchetto.
Con quel cluster non hai chance: puoi solo creare database UTF8.

Se vuoi avere la possibilità di creare database LATIN1, LATIN9, o tutti quelli
che vuoi, scegliendo al momento di creare il database, allora non c'è
alternativa che abbandonare quel cluster e crearne un altro (con qualcosa del
tipo:
/usr/lib/postgresql/8.3/bin/initdb --locale=C -D /usr/local/pgsql/data/

Una volta fatto questo, puoi scegliere di volta in volta, invece con --
locale=...UTF8... (non mi ricordo com'è esattamente) non hai chance, solo UTF8
per tutti.

Il manuale ha un paio di pagine esaustive sull'argomento:
http://www.postgresql.org/docs/8.3/static/multibyte.html

I miei due centesimi.

Ciao,
Vito Meuli

On Tuesday 06 October 2009 20:30:07 G. Allegri wrote:
> Ciao a tutti,
> è tanto che non faccio una domanda, ma stavolta avrei proprio bisogno di un
> lume su Postgresql...
> Era tanto che non ne mettevo su uno da zero, ed ho visto che la gestione
> della localizzazione e dei charset si è fatta molto stringente dalla
> versione 8.3. Adesso il charset del db dev'essere corrispondente al locale
> della macchina, altrimenti createdb ti risponde picche. Ho trovato conferme
> sulla ml di PG.
>
> Dunque, mi hanno passato una Ubuntu 9.04 su cui mettere in piedi un server.
> 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).
> Mi sono preoccupato allora di settare il "client_encoding='latin1' " prima
> di lanciare l'.sql da pgsql.
> NIENTE DA FARE.
> PG non ne vuole sapere di digerire quegli accenti, e non prova nemmeno a
> cambiarli. Semplicemente si piglia le righe che gli piacciono e il resto me
> lo rende indietro senza batter ciglio.
>
> Domanda a tutti i PGisti di gfoss: che devo fare?!!! Esperienze simili da
> condividere? Immagino proprio di sì... tra l'altro tra i dataset da
> caricare ci sono glli shape istat2008, che molti di voi avranno già
> maneggiato...
>
> In attesa di eventuali, confortevoli, risposte
> vi saluto.
> firmato: un uomo risucchiato da un elefante...



_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.