星期二, 8月 30, 2005

XML 與 BOM

電腦的系統中, 有分 big endian format 和 little endian format。

big endian format 代表高位元在前面,littlt endian format則相反。

以例子說明: "中"這個字的 unicode 是 \u4E2D, 若採用 big endian format 則存成 4E2D,
若採用 littlt endian format 則存成 2D4E。

在 XML 檔案開頭可以用 BOM 標誌來判斷內容是 big or little endian format。

轉貼參考資料中的表格如下:


BytesEncoding Form
00 00 FE FFUTF-32, big-endian
FF FE 00 00UTF-32, little-endian
FE FFUTF-16, big-endian
FF FEUTF-16, little-endian
EF BB BFUTF-8


上表顯示出只有 UTF-32 及 UTF-16 使用 BOM 才有實際意義。在 UTF-8 中則只是當成標示。

在 sun jdk 1.4 中,若 parser 到有 BOM 之 xml 檔,則會發生 org.xml.sax.SAXParseException 。所以要盡量避免使用到有 BOM 開頭的 xml 檔,或是使用 Xerces-J 之 XML Parse。

而在 jdk 1.5 中,則沒有此問題。

參考資料:http://www.unicode.org/unicode/faq/utf_bom.html#BOM

0 Comments:

張貼留言

<< Home