Cp1252编码在XML文件中是否无效?

5

我遇到了一个XML文件,尽管看起来很好,但未通过格式检查(也许是我错了)。

我已将其简化为一个微不足道的例子:

<?xml version="1.0" encoding="Cp1252"?>
<jnlp/>

执行此检查的方法如下:

public static boolean isWellFormedXml(InputStream inputStream) {
    try {
        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        inputFactory.setProperty(XMLInputFactory.IS_COALESCING, false);
        inputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
        XMLStreamReader reader = inputFactory.createXMLStreamReader(stream);
        try {
            // Scan through all the reader tokens to ensure everything is well formed
            while (reader.hasNext()) {
                reader.next();
            }
        } finally {
            reader.close();
        }
    } catch (XMLStreamException e) {
        // Ignore the exception
        return false;
    }

    return true;
}

我看到的错误是:
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,40]

错误信息: 编码名称"Cp1252"无效。

唯一的问题是 - 我可以在捕获异常处设置断点并确认此编码名称确实被解析。那么问题出在哪里呢?XML是否也限制了您在文档开头可以使用的编码类型?


我发现了这个:https://dev59.com/F1HTa4cB1Zd3GeqPPz5B - rmalchow
1个回答

4

我知道windows-1252是字符集的标准名称,如果我写了一个XML文件,我根本不会使用Windows字符集(我总是使用UTF-8)。但我们只是尝试解析现有的文件,而不是编写新的XML文件来解析。 :) - Hakanai
嗯...如果一切都失败了 - 并且您知道您的XML文件的来源,但无法更改它...也许您想要预处理这些文件?看起来很丑陋,我知道... - rmalchow
正确的链接可能是由于多年来的变化:http://www.iana.org/assignments/character-sets - sryll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接