XML指南-XML編碼

黄舟
發布: 2017-02-11 15:14:05
原創
1885 人瀏覽過


XML文件可以包含外文字符例如挪威語或法語(中文當然也可以!這一部分還是不能照原文翻譯,下面有些內容是我自己寫的)
為了讓你的解析器能夠明白這些字符,你必須在XML文件中統一的字元編碼標準。



Windows 95/98 記事本
Windows 95/98 記事本不能以Unicode的編碼格式儲存檔案。
可以使用記事本來編輯和保存包含了外文字符的XML文檔 (比如:挪威語或者法語或者中文)

<?xml version="1.0"?> 
<note> 
<from>小奀</from> 
<to>小林</to> 
<message>晚上一起去火锅呀</message> 
</note>
登入後複製


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



在Windows 95/98 記事本中使用編碼
Windows 95/98 記事本編輯XML檔案必須進行編碼屬性設定。 
為了避免發生錯誤,可以在XML文件聲明中加上一個encoding屬性,指明此XML文件的編碼類型,但不要使用Unicode編碼。
下面的編碼類型不會導致錯誤, 並且漢字顯示正常:

<?xml version="1.0" encoding="gb2312"?>
登入後複製




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

<?xml version="1.0" encoding="gbk"?>
登入後複製




錯誤, 且漢字顯示不正常(亂碼):

<?xml version="1.0" encoding="windows-1252"?>
登入後複製
登入後複製




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

<?xml version="1.0" encoding="ISO-8859-1"?>
登入後複製
登入後複製




錯誤,且漢字顯示正常:

<?xml version="1.0" encoding="UTF-8"?>
登入後複製
登入後複製




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

<?xml version="1.0" encoding="UTF-16"?>
登入後複製


使用Windows 2000 記事本程式碼
Windows 2000 的記事本支援Unicode字元集。如果使用Win2000的記事本以Unicode的編碼格式儲存XML文檔(請注意這裡在XML聲明中沒有編碼訊息):

<?xml version="1.0"?> 
<note><from>小奀</from><to>小林</to><message>晚上一起去火锅呀</message></note>
登入後複製

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

Windows 2000 記事本編碼
Windows 2000記事本也可以"UTF-16"編碼格式儲存檔案。
如果你在XML文件中聲明了編碼屬性而又以Unicode編碼格式儲存文件,將可能發生錯誤。
下面的程式碼將會導致錯誤:

<?xml version="1.0" encoding="windows-1252"?>
登入後複製
登入後複製



下面的程式碼將會導致錯誤:

<?xml version="1.0" encoding="ISO-8859-1"?>
登入後複製
登入後複製



: 這個程式碼將會導致這個檔案note_encode_utf16_u.xml, 將會在IE5.0+中顯示正常,在網景Netscape 6.2瀏覽器中將會出現錯誤。

<?xml version="1.0" encoding="UTF-8"?>
登入後複製
登入後複製


錯誤訊息
當時用IE5.0或更高版本瀏覽XML文件時,可能會遇到兩中不同的編碼錯誤:
在文字內容中發現一個非法字元(Anin invalid character 
在文字內容中發現一個非法字元(Anin invalid character 

在文字內容中發現一個非法字元(Anin invalid character 

在文字內容中發現一個非法字元(Anin invalid character 
在文字內容中》 text content)。
如果你的XML文件和你的XML文件的編碼格式不符就可能導致錯誤發生。通常情況是,XML文件包含一些「非英文」字符,並且使用了單字節編碼的編輯器,而且沒有在XML文件的聲明中設定XML文件的編碼格式。 

不支援從目前的編碼格式轉換成另一種編碼格式(Switch from current encoding to specified encoding not supported)。
如果XML文件以Unicode/UTF-16編碼格式保存,但是XML文件的聲明中卻設定了編碼格式是一些單字節的編碼(例如 Windows-1252, ISO-8859-1 或  UTF-8);或者XML文件以單字節編碼格式儲存,但XML文件的聲明中卻設定了編碼格式是一些Unicode/UTF-16的編碼形式,這樣兩種情況都會導致錯誤發生。

結論
結論:在儲存XML文件之前在XML文件的聲明中設定文件的編碼格式,我的一些關於避免錯誤發生的建議:
使用一種支援Unicode編碼格式的編輯器。 
確信你知道自己正在使用那種編碼格式。 
在XML文件中使用屬性聲明設定編碼格式。              

以上是XML指引-XML編碼的內容,並有更多相關內容請關注PHP中文網(www.php.cn)!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!