在用记事本之类的程序将文本文件保存为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就好了。
Java中对有BOM头的UTF-8文件的处理
最新推荐文章于 2023-03-16 16:45:52 发布
本文讨论了使用UTF-8编码保存XML文件时出现的BOM(Byte Order Mark)问题及其对XML解析的影响。文章提供了三种解决方案,包括使用不同的编辑器、定制的UnicodeReader类或直接通过Stream传递数据给Xerces解析器。
260

被折叠的 条评论
为什么被折叠?



