为了账号安全,请及时绑定邮箱和手机立即绑定

Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。

我的books.xml是UTF-8格式的,然后我修改声明中的encoding = "ISO-8859-1",使用InputStream的方式时,可以重现乱码问题。但是用InputStreamReader以后,就报标题中提示的错误。请问该怎么解决?

            InputStreamReader isr = new InputStreamReader(in, "UTF-8");

            // 3.通过saxBuilder的build方法,将输入流加载到saxBuilder中

            Document document = saxBuilder.build(isr);


正在回答

13 回答

楼主的xml文件的格式不是UTF-8,而是UTF-8 with signature(文件最前端有3个字节的二进制签名表示这个文件是UTF-8格式),由于编辑器都认识signature,在gui编辑器上既看不到,也修改不了。

简单的验证方式是用ultra-editor,emeditor等能够查看二进制的编辑器看一下文件的最前面三个字节是不是签名,当然在linux下直接用xxd命令或者od命令就可以看了。

不知道问什么java不认这个UTF-8 signature,我的解决方案是在linux下用iconv转换到gbk再转换回UTF-8。(iconv转换出来是不带签名的)

1 回复 有任何疑惑可以回复我~

lz怎么解决的?

0 回复 有任何疑惑可以回复我~

不是说了吗,xml文件中的第一行的声明有问题。看看是不是多写了或者少写了些东西

0 回复 有任何疑惑可以回复我~
#1

_Aooooo

根本没问题,怎么每个问题下都有人让改第一行声明
2017-02-23 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消

Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信