天天看點

XML指南——XML編碼

xml文檔可以包含外文字元比如挪威語或者法語(中文當然也可以!這一部分還是不能照原文翻譯,下面有些内容是我自己寫的)

為了讓你的解析器能夠明白這些字元,你必須在xml文檔中統一的字元編碼标準。

<b>windows 95/98 記事本不能以unicode的編碼格式儲存檔案。</b>

可以使用記事本來編輯和儲存包含了外文字元的xml文檔 (比如:挪威語或者法語或者中文)

但是如果你用浏覽器打開這個用記事本編輯過的xml文檔,将會出現一個錯誤open it with ie 5.0。

<b>windows 95/98 記事本編輯xml檔案必須進行編碼屬性設定。 </b>

為了避免發生錯誤,可以在xml文檔聲明中加上一個encoding屬性,指明此xml文檔的編碼類型,但是不要使用unicode編碼。

下面的編碼類型不會導緻錯誤, 并且漢字顯示正常:

下面的編碼類型不會導緻錯誤, 并且漢字顯示不正常(亂碼):

下面的編碼類型不會導緻錯誤,并且漢字顯示正常:

下面的編碼類型會導緻錯誤:

<b>windows 2000 記事本可以以unicode編碼格式儲存檔案。</b>

windows 2000 的記事本支援unicode字元集。如果使用win2000的記事本以unicode的編碼格式儲存xml文檔(請注意這裡在xml聲明中沒有編碼資訊):

下面這個檔案; note_encode_none_u.xml, 在ie5.0+中将不會出現錯誤,但如果你使用網景netscape 6.2,就可能出錯。讀者比較 note_encode_none.xml 和 note_encode_none_u.xml這兩個檔案,如果單獨看他們各自的源檔案,是沒有差別的,但為什麼一個能顯示,一個不能顯示呢?答案就是unicode字元集。

<b>windows 2000記事本還可以以"utf-16"編碼格式儲存檔案。</b>

如果你在xml文檔中聲明了編碼屬性而又以unicode編碼格式儲存檔案,将可能發生錯誤。

下面的代碼将會導緻錯誤:

下面這個檔案; note_encode_utf16_u.xml, 将會在ie5.0+中顯示正常,在網景netscape 6.2浏覽器中将會出現錯誤。

當時用ie5.0或者更高版本浏覽xml文檔時,可能會遇到兩中不同的編碼錯誤:

<b>在文本内容中發現一個非法字元(an invalid character was found in text content)。</b>

如果你的xml文檔和你的xml文檔的編碼格式不比對就可能導緻錯誤發生。通常情況是,xml文檔包含一些“非英文”字元,并且使用了單位元組編碼的編輯器,而且沒有在xml文檔的聲明中設定xml文檔的編碼格式。 

<b>不支援從目前的編碼格式轉換成另一種編碼格式(switch from current encoding to specified encoding not supported)。</b>

如果xml文檔以unicode/utf-16編碼格式儲存,但是xml文檔的聲明中卻設定了編碼格式是一些單位元組的編碼(比如 windows-1252, iso-8859-1 或者  utf-8);或者xml文檔以單位元組編碼格式儲存,但是xml文檔的聲明中卻設定了編碼格式是一些unicode/utf-16的編碼形式,這樣兩種情況都會導緻錯誤發生。

結論:在儲存xml文檔之前在xml文檔的聲明中設定文檔的編碼格式,我的一些關于避免錯誤發生的建議:

<b>使用一種支援unicode編碼格式的編輯器。</b>

<b>确信你知道自己正在使用那種編碼格式。</b>

<b>在xml文檔中使用屬性聲明設定編碼格式。</b>