# CLOB to String - Encoding Problem



## Guest (31. Mai 2007)

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.


```
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


----------



## semi (2. Jun 2007)

Eine Möglichkeit wäre BASE64Encoder/BASE64Decoder für Lese/Schreibvorgänge zu verwenden.


----------



## abollm (2. Jun 2007)

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.
> 
> ...



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

Hast du mal eine Beispielausgabe?


----------



## Guest (3. Jun 2007)

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.


----------



## abollm (4. Jun 2007)

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


----------



## Guest (4. Jun 2007)

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

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


----------



## abollm (4. Jun 2007)

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.


----------

