文件编码导致的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信息。