PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : STaX: schreiben einer XML-Datei mit UTF-8 encoding



kegmeon
25-03-2008, 14:52
Hallo liebe Leute,

ich will per stax ein xml-document schreiben lassen.

Unter Linux (wo UTF-8 auch vom BS verwendet wird) funktioniert das prächtig, aber unter Windows kommt folgender Feler:

javax.xml.stream.XMLStreamException: Underlying stream encoding 'Cp1252' and input paramter for writeStartDocument() method 'UTF-8' do not match.
at com.sun.xml.internal.stream.writers.XMLStreamWrite rImpl.writeStartDocument(Unknown Source)
at KmlWriter.writeFile(KmlWriter.java:91)

Zeile 91:

writer.writeStartDocument("UTF-8", "1.0");
was folgender Zeile im xml entspricht:

<?xml version="1.0" encoding="UTF-8"?>

Wenn ich die Zeile durch

writer.writeStartDocument();
ersetze, dann funktioniert's, aber ich finde dann folgende Zeile nicht zumutbar:

<?xml>

hab schon daran gedacht, dass ich encoding in eclipse umstellen sollte, aber das hat auch nix gebracht.

Hat wer ne Idee?

mfg
kegmeon

EDIT:
habe eine möglichkeit gefunden: java -Dfile.encoding=utf8 file. Gibt's nicht eine schönere?

Waxolunist
26-03-2008, 12:12
Du musst dem Writer einen Filestream übergeben mit dem Encoding-Parameter UTF8.

ungefähr so:
new OutputStreamWriter(new FileOutputStream(tmpFile), Charset.forName(outputEncoding))

lg, Christian

kegmeon
26-03-2008, 14:25
Genau sowas hab ich gesucht!

VIelen Dank Waxolunist!