首页 > 解决方案 > 解析后某些 unicode 字符作为其 HTML 代码返回

问题描述

我正在尝试解析和编辑以 UTF-8 编码的 XML 文件,但是某些字符被返回为看起来像它们的 HTML 数字代码而不是字符本身的字符。

为了解决这个问题,我设置了一个 DOM 解析器,基本上无需编辑即可制作 XML 的副本。我专门使用日文汉字/中文字符,但是一些字符正在被解析并作为它们的 HTML 代码返回。我尝试在输入流、转换器以及输出流上将编码指定为 UTF-8,但结果是相同的。我从https://www.journaldev.com/901/modify-xml-file-in-java-dom-parser中摘录了这段特定的代码。

String filePath = "file path";
File xmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
    dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(xmlFile);

    doc.getDocumentElement().normalize();
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(doc);
    StreamResult result = new StreamResult(new File("updated.xml"));
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    transformer.transform(source, result);
    System.out.println("XML file updated successfully");

} catch (SAXException | ParserConfigurationException | IOException | TransformerException e1) 
{
    e1.printStackTrace();
}
}

这是解析前 XML 的样子,返回后应该是一样的:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Entry for Kanji:  -->
<character>
  <literal></literal>
</character>

这是返回的内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Entry for Kanji:  -->
<character>
  <literal>&#134047;</literal>
</character>

标签: javaxmlparsingunicodecharacter

解决方案



推荐阅读