This is now off-topic for this newsgroup, but:
That sounds more like either a bug with the JDBC driver, or
Existing data that that is not really in UTF-8
Ravi Varanasi wrote:
Hi Jesus,
The Oracle 9i database was created fresh with default encoding set
to UTF-8. And I am using Oracle JDBC - OCI driver. The Java class is
invoked from a Korn shell script and the NLS lang param is set to
AMERICAN_AMERICA.UTF8 in the script. I get the following error:
java.sql.SQLException: Io exception: Char array not long enough:
javaCharsToUtf8Bytes
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:333)
at
oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2061)
at
oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at
oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
Any idea what could be the reason and how to fix it ?
Appreciate all your help !!
Thanks,
Ravi Varanasi
408 517 7675
|---------+---------------------------->
| | "Jesus M. Salvo |
| | Jr." |
| | <[EMAIL PROTECTED]|
| | sia.com> |
| | |
| | 09/04/2003 04:49 |
| | PM |
| | Please respond to|
| | xerces-j-user |
| | |
|---------+---------------------------->
>---------------------------------------------------------------------------------------------------------------------------------------------|
|
|
| To: [EMAIL PROTECTED]
|
| cc:
|
| Subject: Re: UTF-8 problem with Xerces-J2
|
>---------------------------------------------------------------------------------------------------------------------------------------------|
Holliday, Donald B. (LNG-CSP) wrote:
Actually, Oracle doesn't "totally supports UTF-8" unless you specifically
alter the database to do that. By default, Oracle installs as USASCII7.
Even installed as USASCII7 (x00 - x7f), Oracle will correctly store and
deliver 8859-1 (Western European 8) (x00 - xff) because Oracle stores
bytes
as 8 bit bytes rather than 7 bit bytes. In UTF-8, any character value
greater then x7f is represented by two or more bytes.
This is true for Oracle 8x in the United States. I assume it is also true
for Oracle 9x.
I'd check with the DBA and verify that the Oracle instance has been
altered
to accept UTF-8.
Thanks,
Donald Holliday
1) The default charset of the Oracle database must be changed to UTF-8.
2) Any existing data in the database prior to changing the charset are
not "converted" to UTF-8. Thus, you will still get "junk" if you try to
read CHARs / VARCHARs from Oracle that were inserted prior to changing
the default charset to UTF-8.
3) Even if the Oracle database was installed with a default charset of
USASCII7, when using JDBC, somehow, the database ( or the JDBC driver )
still allows characters beyond the ASCII range.
4) The Oracle JDBC thin driver automatically converts Strings to and
from Oracle's default charset
5) The Oracle JDBC-OCI driver does not. You have to specify the default
charset of the database by an environment variable ( NLS_LANG ).
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
Jesus M. Salvo Jr.
Mobile Internet Group Pty Ltd
(formerly Softgame International Pty Ltd)
M: +61 409 126699
T: +61 2 94604777
F: +61 2 94603677
PGP Public key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xC0BA5348
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]