CLOB to String - Encoding Problem

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Moin zusammen,

hab leider eine kleines Problem mit Clobs und encoding. Ich mach eine Abfrage auf eine Oracle Datenbank, diese liefert mir ein XML zurück, welches in einem CLOB verpackt ist. Um das in eine Datei zu schreiben, verwende ich die methode clobToString.

Leider zerhaut er mir jedesmal Umlaute (Ä,Ü,Ö etc.). Hat jemand eine Idee wie ich das Problem lösen kann? Danke schon im voraus für mögliche Lösungen.

Code:
	static String clobToString(Clob clob) throws IOException {
		String string = null;
		
		try {
			string = clob.getSubString(1L, (int) clob.length());   /* convert clob into a string */
		} catch (SQLException e) {
			return null;
		}
		return string;
	}

Danke

Dodo
 
Eine Möglichkeit wäre BASE64Encoder/BASE64Decoder für Lese/Schreibvorgänge zu verwenden.
 
Anonymous hat gesagt.:
Moin zusammen,

hab leider eine kleines Problem mit Clobs und encoding. Ich mach eine Abfrage auf eine Oracle Datenbank, diese liefert mir ein XML zurück, welches in einem CLOB verpackt ist. Um das in eine Datei zu schreiben, verwende ich die methode clobToString.

Leider zerhaut er mir jedesmal Umlaute (Ä,Ü,Ö etc.). Hat jemand eine Idee wie ich das Problem lösen kann? Danke schon im voraus für mögliche Lösungen.
[..]
Danke

Dodo

Du hast mit hoher Wahrscheinlichkeit den NLS_LANG-Parameter an deinem Client nicht korrekt gesetzt.

Hast du mal eine Beispielausgabe?
 
Der Substring macht aus Ö zum Beispiel ein ƒ.

NLS_LANG hat doch meines wissen doch was direkt mit der Datenbank zu tun oder?

Also mit anderen programmierspachen z.B. PHP kommt es richtig raus - kann also so wie ich das sehe nicht an der Datenbank liegen, sondern am java Zugriff bzw. an der funktion der clob.getSubString.
 
Anonymous hat gesagt.:
Der Substring macht aus Ö zum Beispiel ein ƒ.

NLS_LANG hat doch meines wissen doch was direkt mit der Datenbank zu tun oder?

Also mit anderen programmierspachen z.B. PHP kommt es richtig raus - kann also so wie ich das sehe nicht an der Datenbank liegen, sondern am java Zugriff bzw. an der funktion der clob.getSubString.

Das kann dennoch an der NLS-Einstellung deines Clients liegen, denn PHP greift auf den Server, und damit direkt auf die dort eingestellten NLS-Parameter zu, während du auf auf einem anderen Rechner als dem Server arbeitest, sprich auf einem Client.

Hast du ein Windows-OS auf deiner Maschine?

Wenn ja, dann schau dir den Wert des NLS-Parameters einmal in der Registry an und vergleiche den mit dem Wert auf dem DB-Server (dazu ggf. den DBA fragen):

HKLM - Software - ORACLE -> NLS_LANG (ggf. auch in HOME0 schauen)

Hth
 
Die Datenbank und der Client laufen beide auf Linux (Ubuntu)

- daher nichts mit Windows OS 🙂 und haben beide die selben Parameter
 
Anonymous hat gesagt.:
Die Datenbank und der Client laufen beide auf Linux (Ubuntu)

- daher nichts mit Windows OS 🙂 und haben beide die selben Parameter

Ich kenne mich nur mit SuSe-Linux und Oracle aus. Deshalb die Frage: Du bist ganz sicher, dass die NLS-Parameter sowohl auf dem Client- als auch auf dem Server-Rechner identisch sind?

Ansonsten müsstest du einmal Beispiel-Code hier posten, um das Problem nachvollziehen zu können. So kann ich erstmal keine weiteren Hinweise geben.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben