Zeichen-Kodierung beim Lesen der Daten mit Hilfe von Java-JDBC-vom Oracle-Datenbank
Wir haben die Daten, die in oracle 10g db enthält Französisch-Zeichensatz. Die Voraussetzung ist, um die Daten Lesen und erzeugen eine Ausgabe-Datei, die mit Java.
Habe ich überprüft die Gültigkeit der Daten in Oracle-db per SQL*plus und es sieht gut aus.
Unter windows:
set NLS_LANG=AMERICAN.AL32UTF8
sqlplus scott/tiger
sql> select billing_address from MYTABLE t where ADDRESS_ID=1 ;
billing_address
-----------------------
MONTRÉAL QUÉ
Nun, wenn ich Lesen Sie die Tabelle aus Java erzeugen eine Ausgabe-Datei, der Charakter ist alles verzerrt und ich sehe nur Fragezeichen anstelle von É.
Gibt es eine spezielle Kodierung, die ich brauche, um, wenn ich versuche zu Lesen/schreiben die Daten in Java.
Bin mit der ojdbc14.jar
und Einstellung der Codierung als UTF-8.
Update: Hier ist mein java-code-snippet.
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);
}
Wussten Sie, dass über die Codierung der Daten beim schreiben in die Ausgabedatei?
Befestigt hiermit snippet von meinem java-code. Zeichensatz 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()) { String billingaddress = rs.getString("BILLING_ADDRESS"); fos = new FileOutputStream(new File("myout.dat")); w = new BufferedWriter(new OutputStreamWriter(fos,cs1)); w.schreiben(billingaddress); }
Befestigt hiermit snippet von meinem java-code. Zeichensatz 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()) { String billingaddress = rs.getString("BILLING_ADDRESS"); fos = new FileOutputStream(new File("myout.dat")); w = new BufferedWriter(new OutputStreamWriter(fos,cs1)); w.schreiben(billingaddress); }
InformationsquelleAutor Raghavan | 2010-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein paar Dinge zu überprüfen,...
?useUnicode=true&characterEncoding=utf8
in es irgendwoInformationsquelleAutor Java Drinker
Eigentlich das problem war mit der erste Zeichensatz, der festgelegt wurde, beim laden der Daten in die oracle-Datenbank. änderung der Zeichenkodierung in der sql*loader control-Datei und es funktioniert jetzt.
können Sie bitte den genauen Datei-details, die Sie geändert haben ?
8 Jahre später, und ich würde auch gerne wissen, die Antwort auf arjun 's und nikli 's Frage
InformationsquelleAutor Raghavan