<?xml version="1.0" encoding="ISO-8859-1"?>
此编码声明有什么意义?
此声明是我正在接收的流内容的一部分。为了能够可靠地读取流,在访问内容之前,我需要了解编码。
答案 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”属性的实际值。
阅读此内容后,解析器可能必须重置流并使用其他读取器来正确读取整个文档。