java 读取 xml 中 编码有问题

李敏910 2009-07-08 05:55:07
java中使用了一个EntityHandler接口解析带外部实体的XML,xml使用的是utf-8编码,可是java在编译的时候提示编码有问题,因为xml中有中文信息,是不是我把Eclipse编码设置成utf-8格式的,应该就可以了 ?

----------------处理程序---------------------------------------


public class ResolverE implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
if (systemId.equals("http://www.builder.com/xml/entity/MyEntity")) {
System.out.println("外部实体的公共标识符是:" + publicId);
System.out.println("外部实体的系统标识符是:" + systemId);
System.out.println("查找实体:");
InputSource inputSource = new InputSource("testem");
return inputSource;
} else {
return null;
}
}
}
-----------------主函数--------------------------------------
public class ResolverMain {
public static void main(String[] args) {
try {
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setEntityResolver(new ResolverE());
reader.parse("xml/entityTest.xml");
System.out.println("解析实体完成");
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

-----------------entityTest.xml--------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<!--
neibu zhushi
-->
<!DOCTYPE company[
<!ELEMENT company (emploeey+ ,buyer*)>
<!ENTITY testem SYSTEM "emploeey.txt">
<!ENTITY testbuy SYSTEM "buyer.txt">
<!ELEMENT emploeey (names,email)>
<!ELEMENT names (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT buyer (#PCDATA|names|email)*>
<!ATTLIST emploeey
id ID #REQUIRED
status CDATA #REQUIRED
>
]>
<company>
&testem;
&testbuy;
</company>

-----------------employee.txt--------------------------------------
<emploeey id="AK47" status="pass">
<names>张三</names>//注意 ,如果这里是中文的话 ,java编译的时候会出错
<email>lili@163.com</email>
</emploeey>
-----------------buyer.txt--------------------------------------
<buyer>wo mai de dongxi bucuo o
<names>lijie</names>
<email>lijie@163.com</email>
</buyer>

-----------------错误信息--------------------------------------
[Fatal Error] emploeey.txt:2:9: Invalid byte 2 of 2-byte UTF-8 sequence.
org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at sax.ResolverMain.main(ResolverMain.java:14)


...全文
266 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫炎圣骑 2009-07-10
  • 打赏
  • 举报
回复
用记事本打开另存为编码为UTF-8
阿士匹灵 2009-07-10
  • 打赏
  • 举报
回复
关注 学习
bolink5 2009-07-10
  • 打赏
  • 举报
回复
是不是转换成utf-8
why_java 2009-07-10
  • 打赏
  • 举报
回复
utf-8
hujun_zero 2009-07-09
  • 打赏
  • 举报
回复
你可把文本文件用记事本打开然另存为的时候选择编码为UF-8
默然说话 2009-07-09
  • 打赏
  • 举报
回复
我晕。。。。。。我好象搞错了。。。。。。。

没注意看,原来还有个EntityTest.xml。。。。。。。

那应该是把文本类型文件的编码修改以后就可以了。
默然说话 2009-07-09
  • 打赏
  • 举报
回复
嗯,可以将在Eclipse里将编码方式更改为UTF-8,注意Eclipse是分文件类型进行更改的,所以你要找到文本类型的编码,将它改为UTF-8,不过,建议你还是把你的那个employee.txt改为employee.xml,然后将Eclipse里的XML的编码改为UTF-8。

另外,建议你在employee.xml文件的第一行加上每一个XML文件都应该有的标志标记(<?xml version="1.0" encoding="UTF-8"?>)
yilagong 2009-07-09
  • 打赏
  • 举报
回复
拼串即可。
mianfeidog 2009-07-09
  • 打赏
  • 举报
回复
2楼的方法我也干过。当时觉得好神奇,呵呵。
billhepeng 2009-07-09
  • 打赏
  • 举报
回复
你可把文本文件用记事本打开然另存为的时候选择编码为UF-8
Monkey_D_Luffy 2009-07-09
  • 打赏
  • 举报
回复
UTF-8
laorer 2009-07-09
  • 打赏
  • 举报
回复
是不是我把Eclipse编码设置成utf-8格式的,应该就可以了 ?

是这样的,不过你如果你直接改的话, 可能在 eclipse 中看到的是乱码,你可以通过词本打开,然后另存为 utf8 格式
平淡面对 2009-07-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 limin910 的帖子:]
-----------------employee.txt--------------------------------------
<emploeey id="AK47" status="pass">
<names>张三 </names>//注意 ,如果这里是中文的话 ,java编译的时候会出错
<email>lili@163.com </email>
</emploeey>
[/Quote]

这里要转换文件"employee.txt"为UTF-8编码。

62,620

社区成员

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

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