From: | Vasiliev Ivan <biggod(at)folksnet(dot)com> |
---|---|
To: | pgsql-jdbc(at)postgresql(dot)org |
Subject: | bug report |
Date: | 2004-06-04 11:33:11 |
Message-ID: | 1701580283984.20040604183311@folksnet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Hello All!
I use a database with type UNICODE, execute query "select *
from some_table". One field has type text. There are some Europe symbols,
which code more than 128.
In method
private synchronized String Enconding#decodeUTF8(byte data[], int offset, int length)
throws SQLException
exeption ArrayIndexOutOfBoundsException occures in last else block:
} else { // length == 2 (maybe add checking for length > 3, throw exception if it is
y = data[i+1] & 0xFF;
val = (z - 0xC0)* (pow2_6)+(y-0x80);
l_cdata[j++] = (char) val;
i+=2;
}
Then your PSQLException is created.
But I have made a trick :
} catch (Exception l_e) {
try {
return new String(data, offset, length, "UTF-8");
} catch(Exception e) {
throw new PSQLException("postgresql.con.invalidchar", l_e);
}
}
And, as no exception occures during string creation, your "fast code"
decodeUTF8() has an error, I suppose....
Database server version:
PostgreSQL 7.4.1 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.2 20030222 (ASPLinux 3.2.2-5asp)
JDBC driver: pg74.213.jdbc3.jar (this method doesn't differ from
driver devpgjdbc3.jar)
Let me know, if I wrong, or may be you want some additional
information.
--
Best regards,
Vasiliev mailto:biggod(at)folksnet(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Markus Schaber | 2004-06-04 13:19:52 | How to insert binary data |
Previous Message | Christian van der Leeden | 2004-06-04 07:54:56 | Transactions not idle but "idle in transaction" since 7.4 and JDBC 7.4.213 |