【问题标题】:Wrong characters in Java XML?Java XML 中的字符错误?
【发布时间】:2020-03-10 17:51:27
【问题描述】:

我有以下问题: 对于一个项目,我创建了自己的记录器,它会生成一个带有自定义标签的 xml 文件。 问题是使用 DOM 和 JAXB 创建 XML 可能在编码方面存在问题。由于“内容”字段总是产生不正确的字符。 我已经尝试使用 UTF-8 / windows-1252 更改编码。 我发现实际上我随后运行记录器的项目使用 ISO-8859-1,我也尝试替换它,但没有。作为内容字段的输出,我总是得到这些难以理解的字符。 谁能帮帮我?

我的代码:

        if (OS.contains("Window")) {

            try {

                fh = new FileHandler(userDir+s+logF+s+jade+s+nameAgent+"-receive(Logger Java).xml" );
                logger.addHandler(fh);
                XMLFormatter formatter = new XMLFormatter();  
                fh.setFormatter(formatter);  
                logger.info(" ");

            }

            catch (SecurityException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }
        }


        XmlCreator xmlcreator = new XmlCreator();
        xmlcreator.setOntology(onto);
        xmlcreator.setPerformative(perf);
        xmlcreator.settimeStamp(ts);
        xmlcreator.setProtocol(pro);
        xmlcreator.setReceiver(rec);
        xmlcreator.setContent(con);

        try {

            File file = new File("C:\\Users\\Francesco\\Desktop\\writereceiver.xml");
            JAXBContext jaxbContext = JAXBContext.newInstance(XmlCreator.class);
            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

            // output pretty printed
            jaxbMarshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            jaxbMarshaller.marshal(xmlcreator, file);
            jaxbMarshaller.marshal(xmlcreator, System.out);

        } catch (JAXBException e) {
            e.printStackTrace();
        }

输出 XML(内容标签有问题):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xmlCreator>
    <content>’ sr pojo.SongRequestInfoÃÃcÀWCë</content>
    <performative>ACCEPT-PROPOSAL</performative>
    <receiver>jade.util.leap.ArrayList$1@445c4a59</receiver>
    <timeStamp>1583849551513</timeStamp>
</xmlCreator>

【问题讨论】:

  • con 中有什么内容?它是什么类型的?它是如何定义的?谁来填?请出示相关代码。
  • 看起来 XML 文件是正确的,而且您查看输出的方法没有识别出输出是 UTF-8。
  • con 和所有其他都是字符串
  • 我使用 atom 我必须做的事情,看到它正确吗?我已经尝试过使用 UTF-8 更改编码

标签: java xml encoding jaxb


【解决方案1】:

我同意@VCR。输出的 XML 很可能是正确编码的 UTF-8 XML 文档,它只是看起来很奇怪,因为您正在使用一些不知道如何显示 UTF-8 的软件来查看它。

 开头的字符对的普遍存在表明当您使用认为它正在显示 iso-8859-1 的软件显示 UTF-8 数据时会发生什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    相关资源
    最近更新 更多