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。
轉貼參考資料中的表格如下:
Bytes | Encoding Form |
---|---|
00 00 FE FF | UTF-32, big-endian |
FF FE 00 00 | UTF-32, little-endian |
FE FF | UTF-16, big-endian |
FF FE | UTF-16, little-endian |
EF BB BF | UTF-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