7.3.1 UTF-8 bug(?) and 7.2.x Charset compatibility - Mailing list pgsql-jdbc

From Achilleus Mantzios
Subject 7.3.1 UTF-8 bug(?) and 7.2.x Charset compatibility
Date
Msg-id Pine.LNX.4.44.0301281057280.14316-100000@matrix.gatewaynet.com
Whole thread Raw
Responses Re: 7.3.1 UTF-8 bug(?) and 7.2.x Charset compatibility
Re: 7.3.1 UTF-8 bug(?) and 7.2.x Charset compatibility
List pgsql-jdbc
Hi i encountered 2 problems regarding the 7.3.1 jdbc driver.

1) The new 7.3.1 assumes data is stored in UNICODE in the database
(which is most likely reloaded from a 7.2.x dump)
For instance, in my case all text data in my 7.2.3 were
ISO-8859-7 (Greek) (8bit ASCII compatible).
I was not able to read these data correctly since the driver
assumed i stored them in utf-8.

2) When the contents of a varchar or text field are the
ASCII 0xA0 0x0A (which for some reason IE strangely produces)
the driver throws an java.lang.ArrayIndexOutOfBoundsException :

2003-01-27 11:50:55,665 ERROR [STDERR]
java.lang.ArrayIndexOutOfBoundsException
2003-01-27 11:50:55,666 ERROR [STDERR]  at
org.postgresql.core.Encoding.decodeUTF8(Encoding.java:259)
2003-01-27 11:50:55,667 ERROR [STDERR]  at
org.postgresql.core.Encoding.decode(Encoding.java:165)
2003-01-27 11:50:55,667 ERROR [STDERR]  at
org.postgresql.core.Encoding.decode(Encoding.java:181)
2003-01-27 11:50:55,668 ERROR [STDERR]  at
org.postgresql.jdbc1.AbstractJdbc1ResultSet.getString(AbstractJdbc1ResultSet.java:97)

In order to solve these 2 problems for my case , i.e. with no need
for unicode support i wrote this simple patch.
(Note this patch is usefull only for people who DONT NEED
multibyte support)
--------------------------cut here------------------------------
*** AbstractJdbc1Connection.java.orig    Tue Jan 28 09:42:54 2003
--- AbstractJdbc1Connection.java    Tue Jan 28 09:50:09 2003
***************
*** 372,382 ****
          //support is now always included
          if (haveMinimumServerVersion("7.3"))
          {
              java.sql.ResultSet acRset =
!                 ExecSQL("set client_encoding = 'UNICODE'; show autocommit");

              //set encoding to be unicode
!             encoding = Encoding.getEncoding("UNICODE", null);

              if (!acRset.next())
              {
--- 372,384 ----
          //support is now always included
          if (haveMinimumServerVersion("7.3"))
          {
+ //            java.sql.ResultSet acRset =
+ //                ExecSQL("set client_encoding = 'UNICODE'; show autocommit");
              java.sql.ResultSet acRset =
!                 ExecSQL("show autocommit");

              //set encoding to be unicode
! //            encoding = Encoding.getEncoding("UNICODE", null);

              if (!acRset.next())
              {
-------------------cut here-------------------------------------------
==================================================================
Achilleus Mantzios
S/W Engineer
IT dept
Dynacom Tankers Mngmt
Nikis 4, Glyfada
Athens 16610
Greece
tel:    +30-10-8981112
fax:    +30-10-8981877
email:  achill@matrix.gatewaynet.com
        mantzios@softlab.ece.ntua.gr



pgsql-jdbc by date:

Previous
From: "Mykola Dudar"
Date:
Subject: Re: how to get info about tables in remote dB?
Next
From: "Pier Paolo Bortone"
Date:
Subject: BYTEA dump compatibility