У нас есть данные, хранящиеся в 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);
}
Вы думаете о кодировании данных при записи его в выходной файл? – Kwebble
Прилагается фрагмент кода моего 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