2012年4月20日 星期五

Invalid byte 1 of 1-byte UTF-8 sequence.

今天遇到 dom4j 丟出以下的 Exception

org.dom4j.DocumentException: Invalid byte 1 of 1-byte UTF-8 sequence.

查了一下網路之後,得到的結果是因為讓 dom4j 的 SAXReader 讀取 XML 時
XML 在標頭宣告自己的編碼是 UTF-8,但實際上檔案儲存時並不是用 UTF-8。
後來發現我用 NotePad++ 儲存的 XML 檔忘了選編碼了
要在 NotePad++ 的工具列上選 [編碼][編譯成 UTF-8 碼] 或者 [編譯成 UTF-8 碼 (檔首無 BOM)]


如果 XML 是用程式碼產生的,可以參考以下的寫法強制指定輸出的檔案編碼:
File outputFile = new File("output.xml");
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(outputFile , "UTF-8");

沒有留言: