【问题标题】:Java XML encoding errorJava XML 编码错误
【发布时间】:2012-01-24 22:45:14
【问题描述】:

我在我的 Java 应用程序中实现了以下代码

//create string from xml tree
            StringWriter sw = new StringWriter();
            StreamResult result = new StreamResult(sw);
            DOMSource source = new DOMSource(doc);
            trans.transform(source, result);
            String xmlString = sw.toString().replaceAll("&[^;]+?;", ""); //Replace invalid HTML characters

            //print xml
            System.out.println("The XML is:\n\n" + xmlString);

            OutputStream out = new FileOutputStream(dir.getSearchFileOutputDirectory() + "\\" + "output.xml");

            //Write the XML to disk
            out.write(xmlString.getBytes("ISO-8859-1"));
            out.close();

现在,如果我在 Netbeans 中运行它,XML 文件可以在 Chrome、IE 和 Firefox 中完美呈现。但是,一旦我清理并构建代码,然后运行独立的 JAR 文件,浏览器会报告文件中的编码错误,并且无法呈现它。

问题是他们失败的行并没有真正包含任何不寻常的东西,只是我能看到的标准 ASCII 字符。

谁能解释为什么会发生这种情况?我明天要演示代码,现在我很恐慌,为什么它突然做这种奇怪的事情......

任何意见将不胜感激。

谢谢

托尼

【问题讨论】:

  • 您是否对每种方式生成的文件进行了比较?

标签: java xml encoding iso-8859-1


【解决方案1】:

因为您是在字符和字节级别处理文件,而不是使用支持 XML 的工具,所以编码完全是您的责任。您似乎没有尝试确保用于写入输出流的编码与 XML 声明中出现的编码相同,因此这种失败似乎不可避免。

【讨论】:

    【解决方案2】:

    XML 不是 HTML。替换操作是一件坏事。如果您的样式表说输出是 HTML,那么它将起作用。如果它说输出是 XML,那么不要尝试将其用作 HTML。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多