我的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);
问题的原因:windows在保存utf-8编码文件时,自动带上一个BOM头,这样的话,java在文件编码转换时就会多转换一个BOM头,导致输入流读取异常
解决办法:把books.xml文件的内容全部复制 用java ide 创建一个空文件(注意,ide的编码方式需为utf-8),将内容复制进去就可以了
捉急啊........
lz,怎么解决的?
http://www.cnblogs.com/jamespan23/p/5971514.html这篇博客就能完美解答你的问题了,希望采纳,非常感谢!!
我也遇到了这个问题,我检查了N多边不是我敲错或怎么。
我是这样解决的,把原有文件删掉,然后在该位置新建一个file,然后命名为原来相同的名字,再把原来的东西拷贝进去...保存一下...就可以了。
我刚才也遇到了同样的问题,是xml文件的编码跟项目的编码不一致吗,最后我把xml文件的编码改成跟项目的编码,就可以了
把xml文件用EditPlus之类的工具打开,再保存为UTF-8编码,不是UTF-8+DOM。我也遇到这个问题,然后按照这么做就解决了,郁闷了好久啊
现象: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"缺少这种类似的信息也会报这种错误
你看前面是不是<?xml >是不是有空格? 去掉就好了
我遇到了同样的问题
楼主的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转换出来是不带签名的)
lz怎么解决的?
不是说了吗,xml文件中的第一行的声明有问题。看看是不是多写了或者少写了些东西