我们将数据存储在 oracle 10g db 中,其中包含法语字符集。要求是使用Java读取数据并生成输出文件。
我通过 SQL*plus 检查了 Oracle db 中数据的有效性,看起来不错。
从窗口:
set NLS_LANG=AMERICAN.AL32UTF8
sqlplus scott/tiger
sql> select billing_address from MYTABLE t where ADDRESS_ID=1 ;
billing_address
-----------------------
MONTRÉAL QUÉ
Run Code Online (Sandbox Code Playgroud)
现在,当我从 Java 中读取表以生成输出文件时,字符全是乱码,并且我看到问号代替了 É。
当我尝试在 Java 中读/写数据时,是否需要设置任何特殊的编码。
我正在使用ojdbc14.jar并将编码设置为 UTF-8。
更新:这是我的 java 代码片段。
Charset cs1 = Charset.forName("UTF-8");
PreparedStatement pStmt = conn.prepareStatement("select * from talbe where address_id=1");
ResultSet rs = pStmt.executeQuery();
Writer w = null;
FileOutputStream fos = null;
if(rs.next()) {
String billingaddress = rs.getString("BILLING_ADDRESS");
fos = new FileOutputStream(new File("myout.dat")); …Run Code Online (Sandbox Code Playgroud)