Я использую DOM4j
для разбора и написания XML-дерева, которое всегда находится в UTF-8.
Мой файл XML включает немецкие специальные символы. Разобрать их не проблема, но когда я записываю дерево в файл, специальные символы преобразуются в символы �.
Я не могу изменить кодировку файла XML, поскольку она ограничена UTF-8.
Код
SAXReader xmlReader = new SAXReader();
xmlReader.setEncoding("UTF-8");
Document doc = xmlReader.read(file);
doc.setXMLEncoding("UTF-8");
Element root = doc.getRootElement();
// manipulate doc
OutputFormat format = new OutputFormat();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileWriter(file), format);
writer.write(doc);
writer.close();
Ожидаемый результат
...
<statementText>This is a test!Ä Ü ß</statementText>
...
Фактический результат
...
<statementText>This is a test!� � �</statementText>
...