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

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);


正在回答

14 回答

问题的原因:windows在保存utf-8编码文件时,自动带上一个BOM头,这样的话,java在文件编码转换时就会多转换一个BOM头,导致输入流读取异常

解决办法:把books.xml文件的内容全部复制 用java ide 创建一个空文件(注意,ide的编码方式需为utf-8),将内容复制进去就可以了

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

捉急啊........

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

lz,怎么解决的?


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

http://www.cnblogs.com/jamespan23/p/5971514.html这篇博客就能完美解答你的问题了,希望采纳,非常感谢!!

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

我也遇到了这个问题,我检查了N多边不是我敲错或怎么。

我是这样解决的,把原有文件删掉,然后在该位置新建一个file,然后命名为原来相同的名字,再把原来的东西拷贝进去...保存一下...就可以了。

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

_Aooooo

亲测可用
2017-02-23 回复 有任何疑惑可以回复我~
#2

落叶萧萧online 回复 _Aooooo

也是重新建就能用,和以前的不能用会不会是由于我们没有close?
2017-07-22 回复 有任何疑惑可以回复我~
#3

落叶萧萧online 回复 落叶萧萧online

试了好像没用。。算了没事。新建一个继续使用就不会报错了
2017-07-22 回复 有任何疑惑可以回复我~
#4

qq_李旭东_0 回复 _Aooooo

根本没用
2018-10-31 回复 有任何疑惑可以回复我~
#5

qq_李旭东_0 回复 _Aooooo

根本没用
2018-10-31 回复 有任何疑惑可以回复我~
#6

wc,真的可以,哭了,感谢来自2016年的评论,帮到了四年后的我,感谢~
2020-12-10 回复 有任何疑惑可以回复我~
查看3条回复

我刚才也遇到了同样的问题,是xml文件的编码跟项目的编码不一致吗,最后我把xml文件的编码改成跟项目的编码,就可以了

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

现象:Tomcat启动时,spring加载配置文件applicationContext.xml出错,抛出nested exception is og.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 47; cvc-elt.1: 找不到元素 'beans' 的声明r的异常信息。


造成该异常原因:配置文件头部配置的xsd版本信息不正确,造成解析时出错。spring头部xsd或dtd校验文件的查找分两步,第一先从本地jar包中找,如果找到则用本地jar包的进行校验(可以在spring-beans.jar或spring-context.jar里的META-INF下的spring-schemas文件中找到xsd文件位置的定义),如果没有找到则进行第二步查找,它会尝试从网络中下载该文件然后校验,如果系统断网或下载不下来,则会抛出上述异常.

解决办法 : 将applicationContext.xml中xsd文件定义的版本改为spring jar包中定义的xsd的版本,如果版本定义的太高在本地会无法找到,只能从网络上下载。

如果还是报错,那么配置文件信息不全,比如:xmlns="http://www.springframework.org/schema/beans"缺少这种类似的信息也会报这种错误

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

你看前面是不是<?xml  >是不是有空格? 去掉就好了

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

我遇到了同样的问题

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

楼主的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 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消

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

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