1

XML 序言本身应该是什么编码(以及为什么)

例如应该

<?xml version="1.0" encoding="big5" ?>

本身是用big5编码的吗?


受如何使用 Javascript 在浏览器中解析非 UTF8 XML启发的问题?,其中海报具有以 big5 编码的 XML 序言/声明。

4

2 回答 2

1

在 Big5 中编码 ASCII 是不可能的。

Big5 是纯粹的双字节字符集。为了允许混合单字节字符集,所有 Big5 2 字节字符编码都设置了高位。标准从未指定要使用哪个 SBCS,事实上的标准是 ASCII,因为所有 ASCII 字符的高位都清楚,所以可以明确区分。

换句话说,Big5 不包含对应于标准 ASCII 字符集的 2 字节编码,因此包含 XML 序言和标记分隔符的唯一方法是使用 ASCII 字符。

于 2016-07-20T05:46:51.817 回答
1

XML 声明必须采用与文档其余部分相同的编码。如果文档在 Big5 中,则 XML 声明必须在 Big5 中。

这对 XML 解析器意味着它必须具有支持的编码列表,并且必须依次尝试它们,直到找到一个解码文件中前 20 或 30 个字节的结果是具有正确编码的有效 XML 声明标签。

当然这个策略可以优化:如果文件的前几个字节是<?xmlASCII,那么这会减少可能性的集合。

XML 解析器没有义务支持除 UTF-8 和 UTF-16 之类的最小最小集之外的任何编码。

于 2016-07-20T08:50:05.377 回答