Schiller256 Geschrieben 23. April 2006 Teilen Geschrieben 23. April 2006 Ich möchte gern Daten in ein XML File schreiben welches als UTF-8 codiert ist. Da habe ich meine Probleme sobald ich Umlaute versuche in die XML Datei zu schreiben werden sie zwar geschrieben aber eben nicht als Umlaut sondern als Kästchen oder sonstige Zeichen. Ich habe hier mal einen Beispielcode wo es bei mir zu Problemen kommt ich verwende Windows XP als Betriebssystem. import java.io.FileWriter; import java.io.IOException; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; /** * XML Test * */ public class XMLTest { private static Document doc; /** * @param args */ public static void main(String[] args) { SAXBuilder builder = new SAXBuilder(); try { doc = builder.build("./test.xml"); Element root = doc.getRootElement(); Element eintrag = new Element("zeile"); eintrag.addContent("Test Sonderzeichen äüöß "); root.addContent(eintrag); Format format = Format.getPrettyFormat(); // format.setEncoding("iso-8859-1"); format.setEncoding("utf-8"); XMLOutputter out = new XMLOutputter(format); out.output(doc, new FileWriter("./test.xml")); } catch (JDOMException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Hier noch das XML File was bei mir ensteht: <?xml version="1.0" encoding="utf-8"?> <data> <zeile>Test Sonderzeichen ����</zeile> </data> Gibt es eine Möglichkeit den String mit seinen Umlauten in die XML Datei zu bekommen? Wenn ich das encoding auf iso-8859-1 umstelle dann sind die Sonderzeichen sauber ich brauche aber die utf-8 codierung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_Arvid_ Geschrieben 23. April 2006 Teilen Geschrieben 23. April 2006 Ist alles richtig, denn UTF-8 unterstützt ja auch keine Umlaute. Schau auch mal bei Google nach. Nimm also ISO-8859-1, wenn du Umlaute und diverse Währungszeichen (€, etc...) verwenden möchtest. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whatever Geschrieben 24. April 2006 Teilen Geschrieben 24. April 2006 UTF-8 enthält sehr wohl Umlaute. UTF-8 enthält knapp 1.000.000 Zeichen, das reicht aus um den Zeichensatz der meisten Sprachen dieser Welt komplett abzubilden. Ich würde vermuten es ist ein darstellungsproblem und der Editor mit dem du die XML anschaust kann kein UTF-8 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schiller256 Geschrieben 24. April 2006 Autor Teilen Geschrieben 24. April 2006 Danke erstmal für die Antworten. Ich kann mir auch nicht vorstellen wieso UTF-8 keine Umlaute darstellen sollte. Ich habe gestern mal noch ein wenig getestet habe den gleichen Code wie oben auf einem OpenSuse 10 System laufen lassen da war die XML Datei so wie ich es wollte. Auch nachher als ich mir die Dateien in Windows wieder angeschaut habe war alles noch OK. Ich verwende eclipse sowohl in Windows als auch im Linux. Bei beiden ist standardmäßig UTF-8 als Zeichencodierung angegeben. Nach noch etwas mehr suchen habe ich dann noch den FileWriter durch einen BufferedWriter ersetzt. So das der Code jetzt so aussieht: … out.output(doc, new BufferedWriter(new OutputStreamWriter(new FileOutputStream("./test.xml"), "UTF8"))); … Das erzeugt mir auch unter Windows dann eine XML Datei die alle Umlaute sauber enthält. Diese Datei habe ich dann aber jemanden geschickt der ein BSD System laufen hat bei dem waren die Umlaute dann wieder nicht zu erkennen. Obwohl die Datei als Fileinfo UTF-8 als Encoding angegeben hat. Ist der oben gepostete Weg ein richtiger Ansatz eine XML Datei in UTF-8 zu codieren oder gibt es da noch andere/ bessere Weg? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.