@hunter129

天天学习,好好向上!

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  21 随笔 :: 5 文章 :: 37 评论 :: 0 Trackbacks
文件编码导致的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信息。
posted on 2008-05-21 22:22 hunter129 阅读(10126) 评论(4)  编辑  收藏 所属分类: 基础调试相关

评论

# re: 文件编码导致的sun.io.MalformedInputException异常 2008-07-09 16:38 ironwan
能否修改代码来解决这个问题的?如果客户使用我们的系统时,让他们这么干他们肯定反对啊!  回复  更多评论
  

# re: 文件编码导致的sun.io.MalformedInputException异常 2008-07-09 18:35 落Nicety
@ironwan
这个问题的根源应该跟文件解析有关系
可以尝试 修改这些 不过难度比较大 我没有尝试过  回复  更多评论
  

# re: 文件编码导致的sun.io.MalformedInputException异常[未登录] 2009-04-12 17:47 ws
请问如果是由于是使用了IBM的JKD(本机),而跟程序不兼容怎么解决这个问题  回复  更多评论
  

# re: 文件编码导致的sun.io.MalformedInputException异常 2009-07-13 15:04 落Nicety
@ws
你这个是ibm jdk io的问题吧。
给jvm 增加参数-Dibm.stream.nio=true  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问