XML文件編碼問題


這兩天的過程中的一個項目,以解決編碼格式ANSI的xml當文件。我遇到了一些問題。下面的例子現在將總結分析過程。


通過win7記事本或notepad++創建一個xml文件test_source:

<?

xml version="1.0" encoding="utf-16"?> <note> <name>coffeecat</name> <chn>"測試"</chn> </note>

能夠看到在xml文件的第一行。聲明編碼格式為utf-16。也就是unicode,使用IE瀏覽器打開test_source失敗。

通過Ultra Edit將上述已創建的xml另存為test_ue,在保存時,顯式的設置編碼為utf-16。通過瀏覽器卻能直接打開,這是為什么?


在網上查閱了一些資料,問題可能出在xml文件頭中聲明的字符編碼與實際保存文件的編碼格式不符。

驗證:

使用Ultra Edit將test_source和test_ue打開,並切換為十六進制編輯模式:

test_source:

test_ue:

當中前兩位標示出了文件實際存儲格式的不同,以3C 3F開頭的文件為ANSI格式存儲的文件,而以FF FE開頭的文件是Unicode little endian格式存儲的。

結論:

要成功使用IE瀏覽器打開xml文件,一定要確保xml文件的格式聲明與實際存儲格式一致,建議在編輯xml文件時,盡量使用Ultra Edit等專業的工具進行。假設不能確定文件期望的保存格式,能夠將xml中的格式聲明部分(encoding="utf-16")刪掉。這樣xml文件也能夠在IE瀏覽器中打開。(能夠臨時解決這個問題。但不建議,可能引起的問題未知)


額外的:

在工作中,碰到了須要解析一份ANSI編碼格式的xml文件,如上述的test_source.xml。當中包括了中文字符。為了不影響解析的功能,無法通過Ultra Edit將其編碼格式改動為Unicode。可是項目須要這份xml文件能夠隨時通過IE瀏覽器查看。該怎么辦呢?

問題還是出在xml文件的格式聲明上,既然實際文件為ANSI,與聲明中的encoding="utf-16“不符,那么應該將聲明的編碼格式改為與ANSI一致的就可以。既然要與包括中文的ANSI編碼格式相符,自然想到了漢子編碼字符集GB2312,將encoding="utf-16“改動為encoding="gb2312“,就可以使用IE瀏覽器打開xml文件了。

或者使用除了包括中文字符還包括繁體、日、韓文字字符的更全面的字符集GBK。


參考資料:

http://tjmljw.iteye.com/blog/1500370

http://ljhzzyx.blog.163.com/blog/static/3838031220129701845443/

http://blog.csdn.net/chaijunkun/article/details/4654397



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM