Re: Encoding for error messages during connect

From: Thomas Kellerer <spam_eater(at)gmx(dot)net>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Encoding for error messages during connect
Date: 2011-11-17 08:17:47
Message-ID: ja2ftl$lud$1@dough.gmane.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Any comments on this?

Thomas Kellerer, 05.11.2011 12:12:
> 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

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2011-11-17 08:30:24 Re: Encoding for error messages during connect
Previous Message Anish Kejariwal 2011-11-17 00:58:44 Re: avoid prepared statements on complex queries?