解决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文件的内容是从网上复制粘贴到本地的。 所以其中的符号可能是中文状态下的。比如那个单书名号<>是中文状态下的,后来我手工重新写的时候在字母输入状态下,改完后,解析就正确了。
所以有时候肉眼并不是那么容易分辨出来拷贝的东西到底是不是自己需要的。尤其是现在的编辑器那么多……结果费了很长时间也解决不了。因为这不是技术性错误,而是隐藏性错误。
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文件的内容是从网上复制粘贴到本地的。 所以其中的符号可能是中文状态下的。比如那个单书名号<>是中文状态下的,后来我手工重新写的时候在字母输入状态下,改完后,解析就正确了。
所以有时候肉眼并不是那么容易分辨出来拷贝的东西到底是不是自己需要的。尤其是现在的编辑器那么多……结果费了很长时间也解决不了。因为这不是技术性错误,而是隐藏性错误。
相关文章推荐
- Cause: java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8 sequence. 的原因和解决办法
- Cause: java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8 sequence. 解决办法
- Tomcat,java.io.UTFDataFormatException:Invalid byte 2 of 2-byte UTF-8 sequence问题的解决
- 编码问题之:java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
- java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence
- java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
- nutch java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence
- 编码问题之:java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
- tom java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
- java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8 sequence
- Caused by: java.io.UTFDataFormatException: Invalid byte 3 of 3-byte UTF-8 sequence
- 编码问题之:java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
- java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
- java.io.UTFDataFormatException: Invalid byte 2 of 2-byte UTF-8 sequence.
- xml解析错误:UTFDataFormatException: invalid byte 2 of 2-byte UTF-8 sequence (0xfd)
- com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 3-byte UTF-8 sequence问题原因,以及解决方案
- com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence报错解决方法
- [JAVA] IOException: Invalid byte 2 of 2-byte UTF-8 sequence(解决办法)
- Java使用dom4j读取xml时报错:org.dom4j.DocumentException: Error on line 2 of document : Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence
- intellij idea 测试用例【Invalid byte 3 of 3-byte UTF-8 sequence】问题解决方法及疑惑