我已经看到了关于同一问题的其他问题,但我仍然得到一个错误。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();
}
}}这里有一个我试图修改的小xml文件(在这种情况下,只需复制)
<?xml version="1.0" encoding="utf-8"?><page>
䕶法喇嘛所居此處?仲無妻室亦降神附體
</page> 在程序启动后,我得到了以下信息:
<?xml version="1.0" encoding="UTF-8"?>
<page>䕶法喇嘛所居此處𡸁仲無妻室亦降神附體</page>有些汉字不能正确转换
发布于 2019-02-28 17:37:15
该死,我从来没有注意到JDOM 2中的这个bug。
对于任何非BMP字符,您都会得到相同的结果。你可以尝试最近几年的表情狂热,看看你会得到同样的结果。
它的发生是因为自动为UTF设置了转义策略--不管是什么编码。它所做的是相当错误的。
如果您将该策略替换为除了XML保留字符之外不转义任何字符的策略,则可以修复此问题:
format.setEscapeStrategy((c) -> false);https://stackoverflow.com/questions/54920849
复制相似问题