1
A
回答
1
看起來你可能會給utf-16輸入一個不期望utf-16的saxparser。嘗試將數據轉換爲utf-8,這可能會有所幫助。
2
在十六進制編輯器中檢查文件。
如果最初的字節確實是\xEF\xBB\xBF
後跟文檔本身,那麼它是一個UTF-8人造BOM。儘管UTF-8人造材料清單是一種犯規錯誤,生成它們的工具需要使用特殊編程酸銷燬,但XML規範確實可以識別和忽略此字節序列,因此如果您的SAX解析器不符合要求並需要一些踢。
如果是給你最初的字節
實際上是類似的一個:
\xC3\xAF\xC2\xBB\xC2\xBF
\xEF\xBB\xBF\xC3\xAF\xC2\xBB\xC2\xBF
\xEF\x00\xBB\x00\xBF\x00
\xFF\xFE\xEF\x00\xBB\x00\xBF\x00
那麼你所得到的是雙重編碼的意外。在這種情況下,您需要查看生成該文件的程序,因爲它的格式不正確,SAX解析器可能是正確的,並且文件中的其他Unicode字符也可能會混淆。可能它正在做一些愚蠢的事情,例如將文檔串行化成字節串,然後通過僞造的解碼/編碼循環發送它。無論採用哪種方式,如果您需要讓解析器跳過麻煩的字節序列,則必須使用您手動入侵的版本來刪除此前綴。不知道你的SAX解析器是什麼(甚至是什麼語言),很難說如何做到這一點。
也許你可以在將它傳遞給解析器之前尋找輸入流?也許你可以將文件讀入一個字節字符串,並將其中的初始字節刪除到解析器?如果你的解析器沒有給你這些選項,你將不得不以字節爲單位加載文件,剪輯開始並保存到一個新的文件。
相關問題
- 1. 忽略用C字節順序標記++,從流
- 2. 讓SAXParser忽略轉義字符
- 3. ICU字節順序標記(BOM)
- 4. StreamWriter和UTF-8字節順序標記
- 5. 字節順序標記問題
- 6. Ruby:檢查字節順序標記
- 7. 順序忽略第四個字符
- 8. 忽略DataContractSerializer中的字段順序
- 9. FOR XML PATH忽略字母順序
- 10. 忽略不關心順序
- 11. findall忽略順序參數?
- 12. 如何讓SAXParser忽略轉義碼
- 13. 是標記化忽略轉義字符
- 14. XML :: Simple忽略emdash標記?
- 15. XmlPullParser unclosed標記忽略
- 16. Richfaces標記被忽略
- 17. Maven忽略scm標記
- 18. XPath忽略結束標記
- 19. maven忽略uniqueVersion標記
- 20. 使用XmlReader並忽略節點的順序
- 21. 在R中忽略數字標記排序列
- 22. 反向字節順序登記
- 23. 轉換字節數組的文本將字節順序標記檢測
- 24. 排序名單按字母順序忽略「」
- 25. 重複值忽略列順序
- 26. 比較兩個文件忽略順序
- 27. 比較兩個數組忽略順序
- 28. git_revwalk忽略推送參考的順序?
- 29. is_deeply測試忽略數組順序?
- 30. AssertEquals 2列表忽略順序
有可能沒有辦法...只保存沒有BOM – 2010-04-16 11:30:07