[postgis-users] pgsql2shp : Encoding headache

Arnaud Lesauvage arnaud.listes at codata.eu
Fri Oct 16 02:36:11 PDT 2009


Hi all!

I have an UTF8 encoded shapefile, and an UTF8 encoded postgis-enabled 
database. I want my shapefile to be encoded in WIN1252, and a particular 
field to be in uppercase.

Since I am on windows, I don't have an iconv executable. Therefore, I am 
trying to :
- dump the shapefile with shp2pgsql to an sql text file
- load the resulting sql file into a postgresql table
- dump this table into a shapefile with pgsql2shp (in WIN1252)

To load the shapefile into postgresql, I had to dump it without 
specifying a '-W' argument, set my client_encoding to UTF8, then load 
the sql file into postgresql.

If I look at the data with pgAdmin (with client_encoding set to UTF8), 
it looks good : accentuation is fine, special characters are fine.

To dump the data in a WIN1252-encoded shapefile, pgsql2shp has no 
encoding argument, so I set my client encoding to WIN1252 thtough the 
environment variable PGCLIENTENCODING.

If I just dump the file this way, it seems to be fine. So this command 
works fine :
pgsql2shp -f myouput.shp -u postgres -g mygeom mydatabase "SELECT 
mytext, mygeom FROM mytemptable"
->  [621679 rows]

But then, if I dump it through a query to have my field in uppercase, I 
get an error 'character 0xc29f of encoding UTF8 has no equivalent in 
WIN1252' (translated by myself, the message is in French)
The command is simply :
pgsql2shp -f myouput.shp -u postgres -g mygeom mydatabase "SELECT 
upper(mytext) as mytext, mygeom FROM mytemptable"

So I guess there is a problem with my 'upper' conversion, but I have no 
idea what this 0xc29f character could be.

Any help would be greatly appreciated.
Thanks a lot !

--
Arnaud Lesauvage



More information about the postgis-users mailing list