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
Ich hab gelesen, dass man NLS_LANG auf dem Client setzen muss. Dazu habe ich ein Shell-Script geschrieben:
Das wird vor dem Aufruf des Java Programms mittels
aufgerufen. Ein Aufruf von
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:
bekomme ich als Ausgabe
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
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
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);
...
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
Das wird vor dem Aufruf des Java Programms mittels
Code:
source ./set-my-env
Code:
env
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:
Java:
query = "select * from nls_database_parameters"
bekomme ich als Ausgabe
Code:
NLS_LANGUAGE - AMERICAN
NLS_TERRITORY - AMERICA
NLS_CURRENCY- $
NLS_ISO_CURRENCY - AMERICA
NLS_NUMERIC_CHARACTERS - .,
NLS_CHARACTERSET - WE8MSWIN1252
...
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