为了账号安全,请及时绑定邮箱和手机立即绑定

转换 XML 不起作用 UTF-8 XMLOutputter Java

转换 XML 不起作用 UTF-8 XMLOutputter Java

手掌心 2022-07-14 16:27:23
我已经看到关于同一问题的其他问题,但我仍然得到一个错误。Hier 是我尝试修改外部 xml 文件的代码的一小部分。但它会修改文本中的一些字符。import org.jdom2.Document;import org.jdom2.JDOMException;import org.jdom2.input.SAXBuilder;import org.jdom2.output.Format;import org.jdom2.output.XMLOutputter;import java.io.FileOutputStream;import java.io.IOException;public class ModyfyXml {public static void main(String[] args) throws JDOMException, IOException {    try {        SAXBuilder sax = new SAXBuilder();        Document doc = sax.build("F:\\c\\test.xml");        XMLOutputter xmlOutput = new XMLOutputter();        Format format = Format.getPrettyFormat();        format.setEncoding("UTF-8");        xmlOutput.setFormat(format);        xmlOutput.output(doc, (new FileOutputStream("F:\\c\\test2.xml")));    }catch (IOException io) {        io.printStackTrace();    } catch (JDOMException e) {        e.printStackTrace();    }}}Hier 一个我尝试修改的小 xml 文件(在这种情况下只是复制)<?xml version="1.0" encoding="utf-8"?><page> 䕶法喇嘛所居此處𡸁仲無妻室亦降神附體</page> 程序启动后,我得到以下信息:<?xml version="1.0" encoding="UTF-8"?><page>䕶法喇嘛所居此處&#x21e01;仲無妻室亦降神附體</page>一些中文字符不能正确转换
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

Dang 我从来没有注意到 JDOM 2 中的这个错误。

对于任何非 BMP 字符,您将获得相同的结果。你可以试试最近几年的表情符号狂热,看看你会得到同样的结果。

这是因为转义策略自动设置为 UTF-whatever 编码。它的所作所为是相当错误的。

如果您将策略替换为除了 XML 保留字符之外不转义任何内容的策略,这将得到解决:

format.setEscapeStrategy((c) -> false);


查看完整回答
反对 回复 2022-07-14
  • 1 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信