From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | Encoding for error messages during connect |
Date: | 2011-11-05 11:12:31 |
Message-ID: | j935mi$ub7$1@dough.gmane.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Hi,
when the server is set to e.g. lc_messages = 'German_Germany.1252' then error messages during connect are not properly decoded by the driver (or encoded by the server?)
At least when the passwort is incorrect the german error message
Passwort-Authentifizierung für Benutzer »thomas« fehlgeschlagen
is incorrectly received by the driver as
Passwort-Authentifizierung f?r Benutzer ?thomas? fehlgeschlagen
After debugging the driver I found out that the driver creates the stream for the startup communication using US_ASCII encoding which will yield incorrect characters beyond ASCII 127.
I debugged the data that is received from the server and that proofed that the message is received as a single byte encoding. Which seems correct as 'German_Germany.1252' is indeed a single byte encoding.
I changed the stream that the driver uses during connect to use a different encoding, by changing org.postgresql.core.v3.ConnectionFactoryImpl and adding the line
newStream.setEncoding(Encoding.getDatabaseEncoding("ISO-8859-1"));
after Line 77 (where newStream = new PGStream(host, port) is done)
And in that case the error message is decoded properly by the driver.
Now I don't think it would be possible for the driver to find out which encoding to use for that stream before actually having a connection. So it would need to evaluate some kind of client side information, e.g. the lc_messages environment variable on the client or through a connection property that would then be used to initialize the stream correctly.
Personally I'd prefer a connection property (something like "messageEncoding") to control this as this can be part of the JDBC URL which is usually configurable in a Java environment.
What do you think?
Regards
Thomas
From | Date | Subject | |
---|---|---|---|
Next Message | Timbo Chen | 2011-11-10 04:44:12 | parameterized query much much slower than one with hard-coded string |
Previous Message | Johann 'Myrkraverk' Oskarsson | 2011-11-05 07:27:42 | Re: Fwd: Re: [BUGS] BUG #6253: JDBC driver: getIndexInfo() returns quotes around quoted column names |