2013-03-12 67 views
2

我对XML有一个基本的了解。我的问题是为什么有必要提及在XML文档开头使用的编码以及为什么需要编码?为什么需要XML编码?

+0

相关问题:http://stackoverflow.com/q/5165347/1698732 – 2013-03-12 17:28:49

回答

2

It is not required,尽管通常可能要包括它:

在没有外部字符的编码信息(如 MIME头),解析实体被存储在编码其他 比UTF- 8或UTF-16必须以包含编码声明的文本声明(见4.3.1 文本声明)开头。

因此,例如,通过HTTP传输XML时,XML解析器可能会使用Content-Type头这样的值:

Content-Type application/xml; charset=UTF-8 

但是,一旦该文件是存储在本地,就不会包含此信息 - 因此,将编码包含到XML文档的声明部分似乎是一个好主意。

+0

与'VersionInfo'不同,BNF语法表示法中的'EncodingDecl'确实[NOT外观可选](https://www.w3。组织/ TR/REC-xml的/#仲丁基TextDecl)。 – 2017-02-19 16:31:54

0

为什么有必要提一下在一个XML文档

的开始,是不是使用的编码。有默认值。 (UTF-8和UTF-16,其可以是编程之间可靠地区分)

和为什么需要编码

计算机仅理解二进制。编码是用二进制表示字母,数字等的过程,所以可以通过计算机进行处理。不同的编码以不同的方式存储字符。

+0

这意味着我不需要在<?xml标签中提及编码? – AmritaS 2013-03-12 17:36:23

+0

只要编码是UTF-8或UTF-16。 – Quentin 2013-03-12 17:37:48

+1

@Quentin,这是真的吗?从spec:'TextDecl :: ='<?xml'VersionInfo? EncodingDecl S? '?>' - 我认为EncodingDecl只有在整个XML解析被忽略的情况下才能被忽略。 – kamituel 2013-03-12 17:39:04