Auf Thema antworten

Hallo,


ich habe eine Frage zu dem leidigen Thema Umlaute. Auf einem Windows Server läuft eine OracleDB. Die möchte ich per Java auf einem Linuxsystem abfragen. Soweit klappt das. Leider sind die Umlaute kaputt. An die ServerMaschine komme ich administrativ nicht ran. Dort kann ich leider nichts ändern. Ich weiß aber, dass die Software XY auf dem Server, die Umlaute korrekt darstellt.


Ich hab mich schon durch das Netz gewühlt, aber so richtig erfolgreich war ich noch nicht. Vielleicht habt ihr ja einen Tipp, was noch fehlt oder wo man dran schrauben kann?


Der Connect zur DB geht klassisch mittels


[code=Java]

...

query = "SELECT * FROM TABLE ....";

url = "jdbc:oracle:thin:@//"+host+":"+port+"/"+dbname;

Connection con = DriverManager.getConnection(url, dbuser, dbpass);

Statement stmt = con.createStatement();    

ResultSet rs = stmt.executeQuery(query);

...

[/code]


Ich hab gelesen, dass man NLS_LANG  auf dem Client setzen muss. Dazu habe ich ein Shell-Script geschrieben:

[CODE]#!/bin/bash

NLS_LANG=german_germany.AL32UTF8

export NLS_LANG

[/CODE]


Das wird vor dem Aufruf des Java Programms mittels [code]source ./set-my-env[/code] aufgerufen. Ein Aufruf von [code]env[/code] zeigt an, dass die VAR gesetzt ist.


Rufe ich mein Javaprogramm (in der selben Shell) auf und frage dort die DB ab, erscheinen keine Umlaute - bzw. kaputte. Frage ich per Javaprogramm die LANG-Parameter der DB ab mittels:

[code=Java]

query = "select * from nls_database_parameters"

[/code]


bekomme ich als Ausgabe


[CODE]NLS_LANGUAGE - AMERICAN

NLS_TERRITORY - AMERICA

NLS_CURRENCY- $

NLS_ISO_CURRENCY - AMERICA

NLS_NUMERIC_CHARACTERS - .,

NLS_CHARACTERSET - WE8MSWIN1252

...[/CODE]


Irgendwas stimmt noch nicht. Aber was? Wie kann ich die LANG setzen? In der Shell oder in Java oder doch am Server? Hat jemand eine Idee?


Park



Oben