SAX-Fehler - MalformedByteSequenceException: Ungültiges Byte 1 der 1-Byte-UTF-8-Sequenz.

SAX-Fehler - MalformedByteSequenceException: Ungültiges Byte 1 der 1-Byte-UTF-8-Sequenz.

Problem

Wenn einige spezielle UTF-8-Zeichen in einer XML-Datei und der Parser Ihres SAX nicht so konfiguriert ist, dass UTF-8 ordnungsgemäß analysiert wird, wird die folgende Ausnahme ausgelöst.

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:
Invalid byte 1 of 1-byte UTF-8 sequence.
...

Lösung

Die Lösung ist recht einfach: Rufen Sie den Inhalt im UTF-8-Format ab und überschreiben Sie die SAX-Eingabequelle.

File file = new File("c:\\file-utf.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,"UTF-8");

InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");

saxParser.parse(is, handler);

Das vollständige Beispiel können Sie hier lesen -how do read UTF-8 XML file with SAX parser