From: | agostonbejo <bejoag1(at)yahoo(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: How to have ant's <sql> task insert special chars appropriately? |
Date: | 2009-09-24 15:35:30 |
Message-ID: | 25577683.post@talk.nabble.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi Richard,
thanks for the answer! Nevertheless, see below... ;)
> Richard Huxton wrote:
> agostonbejo wrote:
> >
> > Hi!
> >
> > What I'm trying to do is to insert some data from a sql file into a
> postgres
> > DB by calling the <sql> ant task. My problem is that I can't get special
> > characters (even if they can be represented by the standard ASCII
> charset,
> > such as ä, ö, ü, é, etc.) to be inserted correctly.
>
> Those aren't ASCII.
OK, probably my idea of what ASCII is is a bit too vague: by ASCII I simply
meant the ISO-8859-1 charset. (Which might make further discussions about
what exactly belongs to ASCII unnecessary...?)
Eclipse (the editor which I'm using) says that the original SQL file's
encoding is ISO-8859-1, the special characters are shown correctly, also in
other text editors.
>
> There are three places you need to get this right:
> 1. The database encoding
> 2. The client encoding
> 3. The encoding of the contents of the .sql file
>
> Now, since the database is UTF8 that means it can accept the entire
> range of unicode characters, including all ISO-8859-1.
>
> PostgreSQL can automatically convert from ISO-8859-1 to UTF-8 for you,
> so it doesn't matter which you have in your .sql file.
>
> What *does* matter is that you know what encoding your .sql file is
> using and that you set the client encoding appropriately.
How do I set the client encoding to ISO-8859-1? As I wrote, the <sql> task
complains if I set the client encoding to LATIN1 (which is the PostGres
equivalent of ISO-8859-1 if I'm right) that the JDBC driver is not going to
like it. (And so it seems indeed.)
>
> Since you're using Java, it's probably simplest just to use UTF-8 all
> the way through. Crucially, make sure you know what the character-set of
> the .sql file is - any good text editor should be able to tell you / set
> this.
As I wrote in my original post, I *have* tried using UTF-8 "all the way
through" by converting the original ISO-8859-1 file to UTF-8 and calling the
<sql> task with 'encoding="UTF-8"'. It didn't help, the special characters
still became question marks. I've also set the client_encoding parameter in
the sql file explicitly and I know, i.e., pgAdmin tells me the DB's encoding
is UTF-8. (And it should be right, since *that* is able to insert special
characters)
So, to my best knowledge I got it right on all three places, and it still
doesn't work. That's why I opened the topic in the first place.
So any other idea what can be wrong here?
Thanks!
Agoston
>
> --
> Richard Huxton
> Archonet Ltd
>
--
View this message in context: http://www.nabble.com/How-to-have-ant%27s-%3Csql%3E-task-insert-special-chars-appropriately--tp25530663p25577683.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.
From | Date | Subject | |
---|---|---|---|
Next Message | Ms swati chande | 2009-09-24 16:22:47 | Exception 0xC0000005 |
Previous Message | Joshua Tolley | 2009-09-24 15:27:33 | Re: Looking for way to replicate master db to multiple mobile databases |