Java中对有BOM头的UTF-8文件的处理

本文讨论了使用UTF-8编码保存XML文件时出现的BOM(Byte Order Mark)问题及其对XML解析的影响。文章提供了三种解决方案,包括使用不同的编辑器、定制的UnicodeReader类或直接通过Stream传递数据给Xerces解析器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在用记事本之类的程序将文本文件保存为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就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值