您的位置:首页 > 产品设计 > UI/UE

解决java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.

2009-04-18 18:39 429 查看
import java.io.*;

import org.w3c.dom.*;

import javax.xml.parsers.*;

public class MyXMLReader{

public static void main(String arge[]){

long lasting =System.currentTimeMillis();

try{
File f=new File("d://test//test.xml");
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("VALUE");
for (int i=0;i<nl.getLength();i++){
System.out.print("车牌号码:" +
doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("车主地址:" +
doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}

}catch(Exception e){

e.printStackTrace();

}
}
}

解析运行时抛出了如下异常:

java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
at org.apache.xerces.impl.io.UTF8Reader.invalidByte(Unknown Source)
at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
at org.apache.xerces.impl.XMLEntityScanner.skipString(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at MyXMLReader.main(MyXMLReader.java:19)

谷歌,百度了半天都没有解决。最后重新手动输入了一下原xml文件的内容。好了……

总结如下:

xml文件的内容是从网上复制粘贴到本地的。 所以其中的符号可能是中文状态下的。比如那个单书名号<>是中文状态下的,后来我手工重新写的时候在字母输入状态下,改完后,解析就正确了。

所以有时候肉眼并不是那么容易分辨出来拷贝的东西到底是不是自己需要的。尤其是现在的编辑器那么多……结果费了很长时间也解决不了。因为这不是技术性错误,而是隐藏性错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐