2006-10-19
Java中对有BOM头的UTF-8文件的处理
在用记事本之类的程序将文本文件保存为UTF-8格式时,记事本会在文件头前面加上几个不可见的字符(EF BB BF),就是所谓的BOM(Byte Order Mark)。JDK1.5之前的Reader都不能处理BOM,解析这种格式的xml文件时,会抛出异常:Content is not allowed in prolog. 据说JDK1.6已经解决了这个bug。(参考http://www.uuzone.com/blog/mao/98921.htm )
在未使用JDK1.6之前,解决办法有三:
1、不要使用有BOM头的xml文件,就是说不要用记事本保存utf-8的xml文件,editplus就很好用;
2、使用这位仁兄的unicodereader,可以正确处理有BOM的xml文件:
http://koti.mbnet.fi/akini/java/unicodereader/
3、如果是用Xerces解析器,直接传Stream给Xerces,而不是传Reader,Xerces就可以正确的处理了。总之不要用Reader就好了。
在未使用JDK1.6之前,解决办法有三:
1、不要使用有BOM头的xml文件,就是说不要用记事本保存utf-8的xml文件,editplus就很好用;
2、使用这位仁兄的unicodereader,可以正确处理有BOM的xml文件:
http://koti.mbnet.fi/akini/java/unicodereader/
3、如果是用Xerces解析器,直接传Stream给Xerces,而不是传Reader,Xerces就可以正确的处理了。总之不要用Reader就好了。
发表评论
- 浏览: 9724 次
- 性别:

- 来自: 深圳

- 详细资料
搜索本博客
最新评论
-
j2ee系统与rtx的整合实现
可以直接在java类里面调用方法发送消息吗,不到页面
-- by hrob -
下载、合并szdaily的PDF
嗯,wget通用一些,不过axel速度可能快一点,有时候pdf还是挺大的。r是多 ...
-- by ivan -
下载、合并szdaily的PDF
用wget更通用一些吧rm -rf 的 r有些多余不过还是挺强的!
-- by mikecool -
j2ee系统与rtx的整合实现
能不能在服务器端模拟实现从发送人A给接收人B发送即时消息的功能
-- by pennypipi






评论排行榜