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

我已经看到关于同一问题的其他问题,但我仍然得到一个错误。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>

一些中文字符不能正确转换


手掌心
浏览 96回答 1
1回答

白衣染霜花

Dang 我从来没有注意到 JDOM 2 中的这个错误。对于任何非 BMP 字符,您将获得相同的结果。你可以试试最近几年的表情符号狂热,看看你会得到同样的结果。这是因为转义策略自动设置为 UTF-whatever 编码。它的所作所为是相当错误的。如果您将策略替换为除了 XML 保留字符之外不转义任何内容的策略,这将得到解决:format.setEscapeStrategy((c)&nbsp;->&nbsp;false);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java