UTF characters Java JDBC
From: Barney <barney.hyll_at_gmail.com>
Date: Thu, 19 Nov 2009 12:43:17 -0800 (PST)
Message-ID: <bb546eeb-99b3-48e9-a8cc-6746174e337b_at_b2g2000yqi.googlegroups.com>
Hi,
NLS_LANGUAGE
FRENCH
NLS_TERRITORY
CANADA
NLS_CURRENCY
$
NLS_ISO_CURRENCY
CANADA
NLS_NUMERIC_CHARACTERS .
NLS_CHARACTERSET
WE8ISO8859P1
NLS_CALENDAR
GREGORIAN
DD
NLS_DATE_LANGUAGE
FRENCH
NLS_SORT
FRENCH
NLS_TIME_FORMAT
HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT RR-MM-DD
HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT RR-MM-DD HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY
$
NLS_COMP
BINARY
NLS_LENGTH_SEMANTICS
BYTE
NLS_NCHAR_CONV_EXCP
FALSE
NLS_NCHAR_CHARACTERSET
AL16UTF16
NLS_RDBMS_VERSION
9.2.0.3.0
// Java code
} Received on Thu Nov 19 2009 - 14:43:17 CST
Date: Thu, 19 Nov 2009 12:43:17 -0800 (PST)
Message-ID: <bb546eeb-99b3-48e9-a8cc-6746174e337b_at_b2g2000yqi.googlegroups.com>
Hi,
I have a Java app that connects to an Oracle DB and I'm having problems when saving data that include some characters that are only available in UTF-8.
The characters in question : € ™ Œ œ ƒ
I tried to add the following argument to the JVM but it did not worked : -Dclient.encoding.override=UTF-8
Question #1 : Is there something I can do on the Java app side ?
Question #2 : Is there something I can do on the Oracle DB side ?
Below the result of the query SELECT * FROM NLS_DATABASE_PARAMETERS on the database, along with the Java code that interacts whit it.
Thank you very much.
- ------------------------------
- DB
PARAMETER
VALUE
NLS_LANGUAGE
FRENCH
NLS_TERRITORY
CANADA
NLS_CURRENCY
$
NLS_ISO_CURRENCY
CANADA
NLS_NUMERIC_CHARACTERS .
NLS_CHARACTERSET
WE8ISO8859P1
NLS_CALENDAR
GREGORIAN
NLS_DATE_FORMAT YYYY/MM/
DD
NLS_DATE_LANGUAGE
FRENCH
NLS_SORT
FRENCH
NLS_TIME_FORMAT
HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT RR-MM-DD
HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT RR-MM-DD HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY
$
NLS_COMP
BINARY
NLS_LENGTH_SEMANTICS
BYTE
NLS_NCHAR_CONV_EXCP
FALSE
NLS_NCHAR_CHARACTERSET
AL16UTF16
NLS_RDBMS_VERSION
9.2.0.3.0
// ------------------------------
// Java code
package charset;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties;
public class TestClass {
private String url;
public TestClass() {
// localhost
url = "jdbc:oracle:thin:_at_localhost:1521:XE";
}
public int executeUpdate() throws Exception {
Class.forName ("oracle.jdbc.driver.OracleDriver").newInstance
();
Properties props = new Properties();
props.put("user", "username");
props.put("password", "password");
Connection connJHA = DriverManager.getConnection(url, props);
Statement stmt = connJHA.createStatement
(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String descr = "€ ™ Œ œ ƒ";
String strUpdate = "UPDATE PARAM SET DESCR='" + descr + "'
WHERE CODE='CODE_1'";
return stmt.executeUpdate(strUpdate);
}
public void executeSelect() throws Exception {
Class.forName ("oracle.jdbc.driver.OracleDriver").newInstance
();
Properties props = new Properties();
props.put("user", "username");
props.put("password", "password");
Connection connJHA = DriverManager.getConnection(url, props);
Statement stmt = connJHA.createStatement
(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
String strQuery = "SELECT DESCR FROM PARAM WHERE
CODE='CODE_1'";
ResultSet rs = stmt.executeQuery(strQuery);
rs.next();
String descr = rs.getString(1);
System.out.println("descr = " + descr);
}
public static void main(String[] args) {
TestClass test = new TestClass();
try {
if (test.executeUpdate() != 0) {
test.executeSelect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
} Received on Thu Nov 19 2009 - 14:43:17 CST
