XML解析器在遇到错误的encoding =值时应该怎么做?

时间:2015-12-16 21:53:35

标签: xml character-encoding

这里以hexdump形式显示,所以没有歧义。

00000000  3c 3f 78 6d 6c 20 65 6e  63 6f 64 69 6e 67 3d 22  |<?xml encoding="|
00000010  55 54 46 2d 31 36 22 3f  3e 0d 0a 3c 78 6d 6c 3e  |UTF-16"?>..<xml>|
00000020  48 69 3c 2f 78 6d 6c 3e                           |Hi</xml>|

如果遇到非常糟糕的encoding =值,XML解析器应该怎么做?

如果文档的某些其他编码的有效BOM不是一开始在<?xml中声明的编码,答案是否会更改?

我在这里试图弄清楚如何通过一个不能处理UTF-16的链接传递XML文档,但几乎可以处理任何其他编码。当谈到编码时,UTF-16就是古怪的,所以我对此并不感到惊讶。

1 个答案:

答案 0 :(得分:0)

请参阅W3C XML Recommendation,特别是 Encoding Declaration 部分,更具体地说是以下段落:

  

在没有外部运输提供的信息的情况下   协议(例如HTTP或MIME),它是实体的fatal error   包括要呈现给XML处理器的编码声明   在声明中指定的编码之外的编码中,或者用于   实体,既不以字节顺序标记也不以编码开头   声明使用UTF-8以外的编码。请注意,因为ASCII   是UTF-8的子集,普通的ASCII实体并不严格需要   编码声明。

Bold 添加强调。)