XML序言本身的编码

XML序言本身的编码,xml,character-encoding,big5,Xml,Character Encoding,Big5,XML序言本身应该是什么编码(以及为什么) 比如应该 <?xml version="1.0" encoding="big5" ?> 它本身是用big5编码的吗 受启发的问题是,海报的XML序言/声明在哪里用big5编码。不可能用big5编码ASCII Big5纯粹是一个双字节字符集。为了允许单字节字符集的混合,所有Big5 2字节字符编码都具有高阶位集。该标准从未指定要使用哪个SBC,事实上的标准是ASCII,因为所有ASCII字符都具有高阶位清除,因此可以明确区分ASCII

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

比如应该

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

它本身是用big5编码的吗



受启发的问题是,海报的XML序言/声明在哪里用big5编码。

不可能用big5编码ASCII

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


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

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

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


当然,这个策略可以优化:如果文件的前几个字节是
,我想这就回答了问题