2010-07-31 1 views
2

У нас есть данные, хранящиеся в oracle 10g db, который содержит французский набор символов. Требование состоит в том, чтобы читать данные и генерировать выходной файл с использованием Java.Кодировка символов при чтении данных с использованием Java-JDBC из базы данных Oracle

Я проверил достоверность данных в Oracle db через SQL * plus, и это выглядит хорошо.

Из окон:

set NLS_LANG=AMERICAN.AL32UTF8 
sqlplus scott/tiger 
sql> select billing_address from MYTABLE t where ADDRESS_ID=1 ; 
billing_address 
----------------------- 
MONTRÉAL QUÉ 

Теперь, когда я прочитал таблицу с Java, чтобы сгенерировать выходной файл, символ все искажается, и я вижу знаки вопроса вместо É.

Есть ли какая-либо специальная кодировка, которую мне нужно установить, когда я пытаюсь читать/записывать данные на Java.

Am использует ojdbc14.jar и устанавливает кодировку как UTF-8.


Update: Вот мой ява фрагмент кода.

 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")); 
      w = new BufferedWriter(new OutputStreamWriter(fos,cs1)); 
      w.write(billingaddress); 
     } 
+0

Вы думаете о кодировании данных при записи его в выходной файл? – Kwebble

+0

Прилагается фрагмент кода моего java-кода. Charset cs1 = Charset.forName ("UTF-8"); PreparedStatement pStmt = conn.prepareStatement ("select * from table where address_id = 1"); ResultSet rs = pStmt.executeQuery(); Writer w = null; FileOutputStream fos = null; if (rs.next()) { Строка billingaddress = rs.getString ("BILLING_ADDRESS"); fos = new FileOutputStream (новый файл («myout.dat»)); w = new BufferedWriter (новый OutputStreamWriter (fos, cs1)); w.write (billingaddress); } – Raghavan

ответ

1

На самом деле проблема была с начальным набором символов, который был установлен при загрузке данных в базу данных Oracle. мы изменили charset в файле управления загрузчиком sql *, и теперь он отлично работает.

+0

, с какой кодировкой вы меняли, наша кодировка AL16UTF16 в порядке? – nikli

+0

@raghavan можете ли вы указать точные данные о файле, которые вы изменили? – arjun

+0

@ Raghavan 8 лет спустя, и я тоже хотел бы узнать ответ на вопрос арджуна и никли –

4

Несколько вещей, чтобы проверить ...

  1. Ваш JDBC URL должен иметь ?useUnicode=true&characterEncoding=utf8 в нем где-то
  2. Ваш JVM должен иметь все различные символьные наборы установлено, что вам нужно
  3. Возможно, что-то происходит в коде для записи в файл/чтение из файла
    • Можете ли вы опубликовать некоторые из ваших java-кода, если ваша проблема по-прежнему сохраняется?
+2

Пункт 1 является специфичным для JDBC-драйвера MySQL. Он использует Oracle. Это, тем не менее, хорошее направление, чтобы искать причину. – BalusC

Смежные вопросы