Encoding-Problem mit dom4j und XML

Hallo zusammen,

und zwar bin ich heute schon den ganzen Tag mit einem Problem beschäftigt, welches ich irgendwie nicht gescheit gelöst bekomme.

Und zwar versuche ich XML-Dateien mit dem SAXReader zu parsen, was ja auch ansich ganz gut klappt. Bei den XML-Dateien handelt es sich um eine Online-Schnittstelle die sich abfragen lässt, wo ich allerdings nichts an den Dateien ändern kann. Ich muss sie also so nehmen wie sie kommen.
Erst mal wie ich das ganze aufbaue:

saxReader.setEncoding("UTF-8");
Document document;
URL url = new URL("www.dieurl.de/diexmldatei.xml");
document = saxReader.read(url);
Element rootElement = document.getRootElement();```
usw. 
Wie gesagt es klappt alles wunderbar. Bloß das encoding funktioniert nicht wirklich. Konkret geht es um diese Zeichen: 
[XML]<abbr>?ç???</abbr>[/XML]
Sie werden einfach nicht gescheit eingelesen sondern halt nur als "?ç???". Mit allen anderen Sonderzeichen wie äüöß etc hab ich eigentlich keine Probleme.

Wäre schön wenn mir da irgendwer weiterhelfen könnte!

gruß stampuhh!

Hi
Element rootelement = new SAXBuilder().build(file).getDocument().getRootElement();
Das macht das gleiche nur benutzt es den Encoding Tag aus der XML, wenn das dann immer noch nicht passt musst du mal mit einem Editor durchprobieren was für ein Encoding die benutzt haben. Womöglich ist das kein UTF8, sondern 16 oder vielleicht auch nur ISO8115 oder wie das Teil heißt oder cp1250 die Codierung von Windows

Erst schon mal danke für die schnelle Hilfe.

Dein Beispiel verwendet aber leider jdom :wink:
Das heißt, es ist etwas schwieriger für mich das ganze in meinem Projekt zu testen, da ich alles auf dom4j aufgebaut habe. Aber werde mir das ganze morgen mal vornehmen.

Ein kurzer Test hat zumindest schon mal ergeben, dass die Eclipse Console, die ja cp1250 Kodierung hat, die Zeichen nicht ausgeben kann (Ich kann die Zeichen noch nichteinmal als String in Eclipse eingeben, da ich das Dokument dann nicht speichern kann ohne die Kodierung zu ändern).
Wenn ich das File mit deinem Beispiel allerdings auslese und dann wieder als XML-Datei abspeicher sind die Zeichen richtig dargestellt.
Also scheint es schon mal grundsätzlich zu klappen. :slight_smile:

Fragt sich dann nur ob ich das ganze auch so mit Hibernate in die MySql Datenbank bekomme wie es soll :smiley:

Falls jemandem noch einfällt wie es auch mit dom4j klappen könnte, immer her damit :wink:

BTW: Gibt es da eigentlich einen großen Unterschied zwischen jdom und dom4j?

gruß stampuhh!!

Ups das war gestern zu spät ich hab bei dir auch JDOM gelesen :smiley:
Was die Konsole von Eclipse hat ist egal, weil wenns eingelesen wird isses intern UTF, sieh am besten mitm Debugger rein.
Such dir mal einen Editor bei dem du die Codierung frei einstellen kannst.

Kann ich dir nicht genau sagen, ich find JDOM angenehmer zu benutzen.

Ja ich wollte mit der Console von Eclipse auch nur sagen, dass es nicht die Windows Codierung sein kann, da die Zeichen in dieser anscheinend nicht vorkommen :wink:

Zum Editor: Ich verwende Notepad++. Weiß nicht ob der jetzt besonders ist, auf jeden Fall kann man da schon mal etwas mit der Codierung rumspielen. Und Ansi ist es schonmal nicht :smiley:
Muss mir mal nen anderen Editor suchen bei dem man ne größere Auswahl hat. UTF-8 klappt allerdings auch schon.

Ich probiere jetzt aber erst mal weiter mit JDOM rum und hoffe, dass das mein Problem löst.

gruß stampuhh!

So vorab erst mal sry wegen Doppelpost aber es soll ja auch gelesen werden.

Ich habe jetzt ein bisschen rumprobiert und das Problem ist anscheinend weniger der Parser sondern das Einfügen via Hibernate in die Datenbank. Da scheint irgendetwas schief zu gehen.
Manuel kann ich die Zeichen wunderbar in die Tabelle eingeben und mit php ausgeben lassen.

Dann bin ich hier aber jetzt im falschen Unterforum oder?
edit: ok ich glaube ich hab die Lösung:
[XML]jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 [/XML]
hatte zwar extra schon nen eigenen Dialect geschrieben aber das hat wohl nichts gebracht :frowning:
Trotzdem danke noch mal für die Hilfe!

gruß stampuhh!!