Re: Encoding weirdness with JDBC, driver crashing? - Mailing list pgsql-jdbc
From | Barry Lind |
---|---|
Subject | Re: Encoding weirdness with JDBC, driver crashing? |
Date | |
Msg-id | 3BE751BC.9090907@xythos.com Whole thread Raw |
In response to | Encoding weirdness with JDBC, driver crashing? (Nikola Milutinovic <Nikola.Milutinovic@ev.co.yu>) |
List | pgsql-jdbc |
Nikola, You shouldn't need to pass any encoding and you certainly shouldn't pass an encoding that is different than the database encoding. If the database is created with LATIN2 (verify by 'select getdatabaseencoding()' from psql) then the jdbc driver will automatically convert from/to the database encoding to/from the unicode internal representation java uses. If you explicitly set an encoding different than the database is using you will likely have problems since then the driver will convert from/to this encoding instead of the encoding the database is using. If you are still having problems, please post a simple test case that I can run locally to reproduce your problem thanks, --Barry Nikola Milutinovic wrote: > Hi all. > > I'm having a weird episode with JDBC connection and charSet encoding. > > OS: Digital UNIX 4.0D/F > DB: PostgreSQL 7.1.2 and 7.1.3 > > I have created a database with "-E LATIN2" option. Then I imported a > WIN1250 encoded data into it - the data was generated from a set of > static HTML pages and loading was with WIN1250 client encoding. > > The data looks OK from "psql", changing client encoding yields the > expected result. I'm preety sure it is as it should be. > > JDBC interface behaves in a very weird manner: > > URL: jdbc:postgresql://localhost/mercury > OUT: all our alphabet specific characters are tuned into "?" > > URL: jdbc:postgresql://localhost/mercury?charSet=LATIN1 > OUT: I get data OK - LATIN2 encoded!!! > > URL: jdbc:postgresql://localhost/mercury?charSet=LATIN2 > OUT: all our alphabet specific characters are tuned into "?" > > URL: jdbc:postgresql://localhost/mercury?charSet=UNICODE > OUT: JDBC connection crashes with: > > Exception in thread "main" java.sql.SQLException: > at org.postgresql.Connection.ExecSQL(Connection.java, Compiled Code) > at org.postgresql.jdbc2.Statement.execute(Statement.java, Compiled Code) > at org.postgresql.jdbc2.Statement.executeQuery(Statement.java, Compiled > Code) > at test2PostgreSQL.main(test2PostgreSQL.java, Compiled Code) > > On the server side, PostgreSQL spits out: > > ERROR: parser: parse error at or near "t?" > FATAL 1: Socket command type S unknown > > (on my terminal, that "t?" looks really strange, two chars I cannot even > describe, I guess Copy/Paste changed it to "t?") > > So, anyone has an idea what is going on? I can live with > "charSet=LATIN1" for the moment, but I have a nasty feeling, the data is > not loaded as it should be. Namely, I'm not sure that, for instance, > "c-acsan" letter Latin-2 encoded in PostgreSQL is really transformed > into "c-acsan" Unicode encoded inside my Java application. > > Since I'm more oriented to JSP for this matter, I'll live with it, but I > have an uneasy feeling about it. I think this issue should be addressed. > > PostgreSQL was built with: > > --enable-locale enable locale support > --enable-recode enable character set recode support > --enable-multibyte enable multibyte character support > --enable-unicode-conversion enable unicode conversion support > > TYIA, > Nix. > > > ---------------------------(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: