XML 編碼
XML 文檔可以包含非 ASCII 字符,比如法語(yǔ)。
為了避免錯(cuò)誤,需要規(guī)定 XML 編碼,或者將 XML 文檔存為 Unicode。
Windows 記事本
Windows 記事本默認(rèn)會(huì)將文件保存為單字節(jié)的 ANSI (ASCII)。
如果選取文件菜單中的“另存為”命令,就可以規(guī)定雙字節(jié) Unicode (UTF-16)。
將下面的 XML 文件保存為 Unicode (注意文檔不包含任何 encoding 屬性):
<?xml version="1.0"?> <note> <from>John</from> <to>George</to> <message>French: êèé</message> </note>
上面的文件,note_encode_none_u.xml 不會(huì)出錯(cuò)。但是如果規(guī)定了單字節(jié)編碼就會(huì)出錯(cuò)。
下面的編碼(打開(kāi)它),不會(huì)報(bào)錯(cuò):
<?xml version="1.0" encoding="windows-1252"?>
下面的編碼(打開(kāi)它),不會(huì)報(bào)錯(cuò):
<?xml version="1.0" encoding="ISO-8859-1"?>
下面的編碼(打開(kāi)它),不會(huì)報(bào)錯(cuò):
<?xml version="1.0" encoding="UTF-8"?>
下面的編碼(打開(kāi)它),不會(huì)報(bào)錯(cuò):
<?xml version="1.0" encoding="UTF-16"?>
錯(cuò)誤消息
如果您試圖向 IE 中載入 XML 文檔,可能會(huì)得到兩種指示編碼問(wèn)題的錯(cuò)誤:
在文本內(nèi)容中發(fā)現(xiàn)非法字符
如果 XML 文檔中的某個(gè)字符與編碼屬性不匹配,您就會(huì)得到這個(gè)錯(cuò)誤消息。通常,當(dāng) XML 文件中含有外國(guó)字符,且當(dāng)文件使用類(lèi)似記事本的單字節(jié)編碼編輯器保存,以及沒(méi)有指定編碼屬性時(shí),您就會(huì)得到這個(gè)錯(cuò)誤消息。
將當(dāng)前編碼切換為不被支持的指定編碼
如果您的文件被保存為 Unicode/UTF-16,但是編碼屬性被指定為單字節(jié)編碼(比如 Windows-1252、ISO-8859-1 或者 UTF-8)時(shí),那么您就會(huì)得到這個(gè)錯(cuò)誤消息;蛘弋(dāng)您的文檔被保存為單字節(jié)編碼,但編碼屬性被指定為雙字節(jié)編碼(比如 UTF-16)時(shí),也會(huì)得到這個(gè)錯(cuò)誤消息。
結(jié)論
結(jié)論是:編碼屬性應(yīng)當(dāng)被指定為文檔被保存時(shí)所使用的編碼。我最好的避免錯(cuò)誤的建議是:
- 使用支持編碼的編輯器
- 確定編輯器使用的編碼
- 在您的 XML 文檔中使用相同的編碼屬性