1. 程式人生 > >Content is not allowed in prolog異常產生原因及處理方式

Content is not allowed in prolog異常產生原因及處理方式

web專案在啟動的時候報Content is not allowed in prolog錯誤,後經檢查發現是web專案在使用dom4j/sax 讀取一個xml檔案時報錯。
  原因如下:
BOM(Byte Order Mark),是UTF編碼方案裡用於標識編碼的標準標記,在UTF-16裡本來是FF FE,變成UTF-8就成了EF BB BF。這個標記是可選的,因為UTF8位元組沒有順序,所以它可以被用來檢測一個位元組流是否是UTF-8編碼的。微軟做這種檢測,但有些軟體不做這種檢測,而把它當作正常字元處理。


微軟在自己的UTF-8格式的文字檔案之前加上了EF BB BF三個位元組, windows上面的notepad等程式就是根據這三個位元組來確定一個文字檔案是ASCII的還是UTF-8的, 然而這個只是微軟暗自作的標記, 其它平臺上並沒有對UTF-8文字檔案做個這樣的標記。



由於windows平臺把utf-8 格式的檔案在前邊加了 EF BB BF三個位元組 ,而dom4j 不認這些!所以可以使用ue或Notepad++開啟xml 檔案,另存為"utf-8 無bom" 替換專案中的檔案,重新編譯一下問題解決。