Re: Encoding nightmare! Pls help! - Mailing list pgsql-jdbc

From Barry Lind
Subject Re: Encoding nightmare! Pls help!
Date
Msg-id 401EA611.5040904@xythos.com
Whole thread Raw
In response to Encoding nightmare! Pls help!  ("John Sidney-Woollett" <johnsw@wardbrook.com>)
Responses Re: Encoding nightmare! Pls help!  ("John Sidney-Woollett" <johnsw@wardbrook.com>)
List pgsql-jdbc
John,

My first guess is that your code is working fine, it is just your
System.out.print() calls that are the problem.  You haven't specified
what character set to use when printing, so it will use the default
character set for your jvm.  This is necessary since java strings are
stored internally in ucs2 and java needs to convert to some other
character set when printing them out.

thanks,
--Barry

John Sidney-Woollett wrote:
> I've had a discussion on the general list about the implications for
> storing accented characters within a postgres (7.4.1) db.
>
> As a result, I have created a database with no locale = C locale (using
> initdb {other parms} --no-locale)
>
> Here's the database (test) with UNICODE encoding
>
>          List of databases
>      Name     |  Owner   | Encoding
> --------------+----------+----------
>  test         | postgres | UNICODE
>  template0    | postgres | UNICODE
>  template1    | postgres | UNICODE
>
> The problem I'm having is that I CANNOT write accented characters into the
> database or get them out correctly using my java code and the
> pg74.1jdbc3.jar file.
>
> Using psql, I select the data (with client encoding = UNICODE), and I get
>
> tést.jpg
>
> With client encoding = LATIN1, I get
>
> tést.jpg
>
> But in my little java test app, I get:
>
> tést.jpg, tést.jpg, tést.jpg,
>
> I want tést.jpg!!!!!
>
> Here is the offending section of code:
>
> String filename = rset.getString(2);
> System.out.print(filename);
> System.out.print(", ");
>
> if (filename != null)
> {
>   try
>   {
>     filename = new String(rset.getBytes(2), "UTF-8");
>   }
>   catch (UnsupportedEncodingException e)
>   {
>     System.out.println("Cannot decode string?");
>   }
>
>   System.out.print(filename);
>   System.out.print(", ");
>
>   try
>   {
>     filename = new String(rset.getBytes(2), "ISO-8859-1");
>   }
>   catch (UnsupportedEncodingException e)
>   {
>     System.out.println("Cannot decode string?");
>   }
>
>   System.out.print(filename);
>   System.out.print(", ");
> }
>
> Can anyone explain what I am doing wrong? I have become so confused by all
> this, that I don't think I can see the problem straight anymore.
>
> How can I read and write unicode chars into the db. Is there some magick
> parameter that needs to be passed when setting up the connection/driver?
>
> Thanks for any/all help!!
>
> John Sidney-Woollett
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly


pgsql-jdbc by date:

Previous
From: "John Sidney-Woollett"
Date:
Subject: Encoding nightmare! Pls help!
Next
From: Paul Thomas
Date:
Subject: Re: Encoding nightmare! Pls help!