文件編碼導致的sun.io.MalformedInputException異常
如果你沒有使用ibm的jdk,卻依然遇到了這個問題。
如果你的異常是在解析xml的時候出現的,如果你的異常是某些地方有某些地方沒有。
例如tomcat里面沒有,weblogic上有。抑或這個domain有那個domain卻沒有。而確實是同一個應用。
哪么你遇到的可能和筆者要講的是同一個問題。
你的xml文件本身是UTF-8編碼(注意是文件是UTF-8編碼,不是xml文件里面指定的文件內容是UTF-8編碼)?
你的xml文件里面含有中文?
你使用UltraEdit編輯xml文件?
刪掉中文,問題依舊?
那么可以肯定你的問題就是筆者要講的問題
首先給出解決方案:
方案一:
1.xml用記事本打開,刪除里面的中文。
2.在windows 本地新建一個txt文件,用記事本(注意不能用UltraEdit)打開。
3.將xml里面的內容復制到新建的txt文件中。
4.將txt文件重名為xml文件的名稱。覆蓋原來的xml文件
5.看看問題是不是解決了,咔咔 神奇吧。
方案二:(適用于使用eclipse ide的程序員們,其他的能更改文件編碼的程序也行,不過沒測試過)
1.將xml文件的內容剪切出來,保存在別處,什么文件都行,最后是txt中。留下一個空的xml文件
2.將空的xml文件的編碼修改成GBK。注意是文件的編碼,不是xml的那個聲明。當然這里已經刪了。
3.這時候是否看到文件的頭部有亂碼? 刪之!
4.將原來文件的內容烤回來
5.ok問題解決,這種方法不用刪除中文。
問題的根源:
估計有些人已經明白是什么原因了。呵呵,那就是xml文件那個BOM的頭導致的這個問題!
哦?還有沒明白的?下面詳細說明下:
xml文件分為兩種,一種是有BOM信息的,它表示文件是xml格式
另外還有沒有BOM信息的xml文件。
就是這個特殊的BOM信息導致了解析xml出錯。
那跟UltraEdit有什么關系?UltraEdit在編輯xml文件的時候會自動加上這個可惡的BOM信息。