2013-03-12 52 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