Problem mit Kodierung von Umlauten

MySQL, PostgreSQL, SQLite
duergner
RSAC
Posts: 976
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Problem mit Kodierung von Umlauten

Post by duergner » 2006-02-21 10:16

Hallo zusammen,

ich hab ein kleines (großes) Problem mit dem Encoding von Umlauten in einer MySQL DB wenn diese durch eine Java Webapp hineingeschrieben werden.

DefaultCharset ist auf latin1 gestellt, die Kollation der Tabellen läuft auf latin1_general_ci. Tabellentyp ist InnoDB.

Wenn die Webapp Daten in die MySQL Db schreibt, werden wir diese zwar mit dem MySQL Kommandozeilen Client korrekt angezeigt, die Webapp kann sie danach jedoch nicht mehr korrekt anzeigen. Durch phpMyAdmin sehe ich sie auch nicht korrekt. Füge ich die Daten durch phpMyAdmin hinzu, werden sie in der Webapp, in phpMyAdmin und im MySQL Kommadozeilen Client korrekt angezeigt.

Die connectionURL für den Pool im Tomcat ist 'jdbc:mysql://localhost/templedev?autoReconnect=true&useUnicode=true'. Die Webapp läuft auf einem Tomcat 5.0. MySQl ist 4.1.11-Debian_4sarge2-log.

Hat jemand eine Idee wo ich noch nach Fehlern suchen kann? Hab mittlerweile scho fast jede Kombi aus Charset und Kollation ausprobiert.

User avatar
isotopp
RSAC
Posts: 482
Joined: 2003-08-21 10:21
Location: Berlin

Re: Problem mit Kodierung von Umlauten

Post by isotopp » 2006-02-21 10:44

duergner wrote:Hat jemand eine Idee wo ich noch nach Fehlern suchen kann? Hab mittlerweile scho fast jede Kombi aus Charset und Kollation ausprobiert.
Du kannst die Daten mit "select hex(data) from tabelle" anzeigen lassen. Das macht vieles einfacher.

Du kannst den Connector/J einmal befragen, wie er seine Connection sieht, indem Du mit dem Connector/J einmal "SHOW VARIABLES LIKE '%char%'" sendest und Dir das Ergebnis anzeigen läßt.

bfrackie
Posts: 63
Joined: 2003-08-26 12:00

Re: Problem mit Kodierung von Umlauten

Post by bfrackie » 2006-02-21 13:05

warum denn dann "useUnicode=true"?

Java arbeitet standardmäßig mit unicode, wenn du also alles Latin1 haben willst, musst du auch Tomcat das richtige Encoding mitgeben: -Dfile.encoding=ISO-8859-1 in dein Startskript schreiben. evtl. reicht das auch in deinem Framework zu setzen (zB. kann man das bei Struts explizit angeben). und dann natürlich useUnicode=false, falls das dein Connector unterstützt. der Postgresql-Connector ignoriert die Angaben.

Bart

duergner
RSAC
Posts: 976
Joined: 2003-08-20 11:30
Location: Pittsburgh, PA, USA

Re: Problem mit Kodierung von Umlauten

Post by duergner » 2006-02-22 17:16

Das kingt nach guten Ideen. Werd ich mal so an den Entwickler weitergeben und testen.