Re: Encoding for error messages during connect
От | Thomas Kellerer |
---|---|
Тема | Re: Encoding for error messages during connect |
Дата | |
Msg-id | ja2ftl$lud$1@dough.gmane.org обсуждение исходный текст |
Ответ на | Encoding for error messages during connect (Thomas Kellerer <spam_eater@gmx.net>) |
Ответы |
Re: Encoding for error messages during connect
|
Список | 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
В списке pgsql-jdbc по дате отправления: