关于dom4j的utf-8编码的问题

jhlcss 2007-08-27 08:55:40
我组了一个XML字符串,解析过程如下,但是报错:
import java.io.ByteArrayInputStream;
import java.io.InputStream;

import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;

public class TestDom4j {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String sXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><ROOT><TABLE>哈哈哈哈</TABLE></ROOT>";


SAXReader saxReader = new SAXReader();
InputStream inputStream = new ByteArrayInputStream(sXml.getBytes());
try {
Document document = saxReader.read(inputStream);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

报错内容是:
org.dom4j.DocumentException: Error on line 1 of document : Invalid byte 1 of 1-byte UTF-8 sequence. Nested exception: Invalid byte 1 of 1-byte UTF-8 sequence.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.io.SAXReader.read(SAXReader.java:343)
at TestDom4j.main(TestDom4j.java:25)

但是如果把XML字符串中的编码改成gb2312就没问题了,但是我的程序是多语言版本的,我需要怎么做啊?
...全文
489 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhlcss 2007-08-27
  • 打赏
  • 举报
回复
我知道原因了
InputStream inputStream = new ByteArrayInputStream(sXml.getBytes());
改成
InputStream inputStream = new ByteArrayInputStream(sXml.getBytes("UTF-8"));
就可以了
laowantong06 2007-08-27
  • 打赏
  • 举报
回复
public static void main(String[] args) {
// TODO Auto-generated method stub
String sXml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><ROOT><TABLE>哈哈哈哈</TABLE></ROOT>";

SAXReader saxReader = new SAXReader();
try {
Document document = DocumentHelper.parseText(sXml);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

这样就可以了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧