Frage

Auch wenn die Frage Gegenstand scheint kompliziert, das Problem ist ganz einfach.

ich eine XML-Datei mit folgendem Skript erstellen:

def xmlFile = new File("file-${System.currentTimeMillis()}.xml")
mb = new groovy.xml.StreamingMarkupBuilder()
mb.encoding = "UTF-8"
new FileWriter(xmlFile) << mb.bind {
    mkp.xmlDeclaration()
    out << "\n"
    someMarkup {}
}

Dann, wenn ich diese Datei analysieren mithilfe von Code wie:

def xml = new XmlSlurper().parse(xmlFile)

Ich habe die folgende MalformedByteSequenceException Ausnahme:

  

Ausnahme geworfen: Ungültige Byte 2   3-Byte-UTF-8-Sequenz

Und wenn ich die Datei in UTF-8-Format (mit Notepad ++ zum Beispiel) konvertiere dann alles in Ordnung ist.

Also, was kann ich tun, um meine Datei in UTF-8-Format speichern? Warum der Code mb.encoding = "UTF-8" tut es nicht?

Thx

War es hilfreich?

Lösung

Sie benötigen einen Ausgangsstrom Schriftsteller wickeln um ein Outputstream ist utf-8 ist nicht die Standard-charset

new OutputStreamWriter(new FileOutputStream(exportXmlFile),'utf-8') << mb.bind {
    mkp.xmlDeclaration()
    out << "\n"
    someMarkup {}
}

Ich bin mir nicht sicher, welche Einstellung mb.encoding hat, vermutlich setzt nur den Zeichensatz in dem XML-Header

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top