XML编码声明有什么意义?

时间:2018-10-23 10:56:15

标签: xml encoding

<?xml version="1.0" encoding="ISO-8859-1"?>

此编码声明有什么意义?

此声明是我正在接收的流内容的一部分。为了能够可靠地读取流,在访问内容之前,我需要了解编码。

2 个答案:

答案 0 :(得分:1)

  

此编码声明有什么意义?

因此,您可以指定是否使用非默认编码。

(为什么有人在2000年的这一年使用ISO-8859?!)

  

此声明是我正在接收的流内容的一部分。为了能够可靠地读取流,在访问内容之前,我需要了解编码。

XML声明仅使用ASCII字符,因此无需确定字符编码即可对其进行解析。

答案 1 :(得分:1)

请参见XML 1.0 specification,“ F自动检测字符编码(非规范)”部分:

  

XML编码声明充当每个实体上的内部标签,指示正在使用哪种字符编码。但是,在XML处理器可以读取内部标签之前,显然,它必须知道正在使用什么字符编码,这就是内部标签试图指示的内容。在一般情况下,这是绝望的情况。但是,在XML中并不是完全没有希望,因为XML通过两种方式限制了一般情况:假定每个实现仅支持有限的字符编码集,并且XML编码声明的位置和内容受到限制,以便在正常情况下自动检测每个实体中使用的字符编码。

并且:

  

由于每个不带有外部编码信息且未采用UTF-8或UTF-16编码的XML实体必须以XML编码声明开头,其中第一个字符必须为<?xml,因此任何符合条件的处理器都可以检测到在输入2到4个八位位组之后,以下哪种情况适用。

并且:

  

由于编码声明的内容仅限于ASCII字符表中的字符(无论编码方式如何),一旦处理器检测到使用了哪种编码家族,便可以可靠地读取整个编码声明。

因此,无论使用哪种编码,一致的解析器都应该能够自动检测用于文档的编码并解析“ encoding”属性的实际值。

阅读此内容后,解析器可能必须重置流并使用其他读取器来正确读取整个文档。