我已经看到关于同一问题的其他问题,但我仍然得到一个错误。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>䕶法喇嘛所居此處𡸁仲無妻室亦降神附體</page>一些中文字符不能正确转换
1 回答
白衣染霜花
TA贡献1796条经验 获得超10个赞
Dang 我从来没有注意到 JDOM 2 中的这个错误。
对于任何非 BMP 字符,您将获得相同的结果。你可以试试最近几年的表情符号狂热,看看你会得到同样的结果。
这是因为转义策略自动设置为 UTF-whatever 编码。它的所作所为是相当错误的。
如果您将策略替换为除了 XML 保留字符之外不转义任何内容的策略,这将得到解决:
format.setEscapeStrategy((c) -> false);
添加回答
举报
0/150
提交
取消