5

我遇到的一些 XML 文件未能通过格式正确的 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 是否也限制了您可以在序言中使用的编码?

4

1 回答 1

4

查看:

http://www.iana.org/assignments/character-sets/character-sets.xml

我猜你正在寻找的编码可能是 windows-1252。Cp1252 可能是 java 中的有效字符集,但在 XML 中,您不应该使用它(按该名称)。

于 2013-04-22T07:25:25.247 回答