Java JDBC/Linux: Umlaute werden nicht richtig übertragen

P13RR3

Lt. Commander
Registriert
Juli 2003
Beiträge
1.148
Guten Abend zusammen.

Ich hoffe, dass mir hier jmd helfen kann, bin so langsam mit meinem Latein am Ende. Ich habe eine Datenbank auf mySQL basierend bei meinem Webspace.

Gut, soweit dazu.

Lass ich per Java die Tabelle von einem Windowssystem aus befüllen, geht alles wie gewollt (Sonderzeichen wie Umlaute oder ß werden richtig übertragen). Lasse ich aber genau das selbe Programm auf einem RootServer laufen (Suse), hat er Probleme mit dem Zeichensatz. Ich meine damit, dass in der Datenbanktabelle, die aufgefüllt worden ist, die Sonderzeichen nicht dargestellt werden.

Die Datenbank ist auf UTF8 gestellt.

Mich wundert es ein wenig, dass es unter Windows XP geht (von meinem Laptop aus), ich aber Probleme habe, wenn ich es von Linux aus laufen lasse.
Zur Verdeutlichung vlt zwei Bilder:



Probiert habe ich folgendes:
Code:
		Properties props = new Properties();
		props.setProperty("user", p.getProperty("databaseUser"));
		props.setProperty("password", p.getProperty("databasePassword"));
		props.setProperty("useUnicode","true");
		props.setProperty("characterEncoding","UTF-8");
		props.setProperty("connectionCollation","utf8_general_ci");

		con = DriverManager.getConnection(url, props);
oder:
Code:
		String url = "jdbc:mysql://" + p.getProperty("databaseHost") + "/" + p.getProperty("databaseName") +"?user="+p.getProperty("databaseUser")+
		"&password="+p.getProperty("databasePassword")+"&useUnicode=true&characterEncoding=UTF-8&connectionCollation=utf8_general_ci";
		
		con = DriverManager.getConnection(url);

Habt ihr Vorschläge oder seht ihr einen Fehler?
 
Und du bist dir ganz sicher, dass der Inhalt der Datenbank schon fehlerhaft ist? Also dass es nicht nur die Darstellung unter Linux mit phpMyAdmin im Browser ist, die diese Fehler hat? Überprüfe das mal lieber mit dem MySQL Query Browser oder so.
 
Sind denn die Einstellungen von MySQL unter Windows und Linux tatsächlich absolut gleich? Neben neben den Tabellen und einzelnen Spalten kann man in MySQL ja den Zeichensatz auch noch über "character set system", "collation connection", "collation database" und "collation server" setzen.

Läuft denn die Java-Applikation auch beides mal unter demselben System oder ist das einmal Windows und einmal Linux?
 
Das Java Programm läuft einmal unter Windows und einmal unter Linux. Greift -auf die jeweils selbe (!)- Datenbank des Webspaces zu, die mittel Phpmyadmin visualisiert wird. Das phpmyadmin rufe ich ja aus dem Browser heraus auf (jedesmal vom selben System).

Ich bin mir sicher, dass die Daten schon falsch in der DB ankommen, weil mit schon vorhandenen Daten auf Übereinstimmung geprüft wird. Unter Windows kann er alles zuordnen, unter linux kann ers nicht und schreibt sie deshalb in eine extra Tabelle (die man im ersten Post sehen kann). Dort sind deshalb nur so Einträge drin, weil genau bei denen keine Zuordnung stattfinden konnte.
 
Zurück
Oben