我现在还没看透。这应该是标准的:我得到一个带有一些UTF-8字符的XML,我想解析它。
这是一个例子:
<person><name>Nguyển Thị Ngân</name></person>
当我使用GWTs XMLParser解析它并打印出名称节点值时,字符已损坏:
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><person><name>Nguyển Thị Ngân</name></person>";
Document doc= XMLParser.parse(xml);
NodeList list = doc.getElementsByTagName("name");
for(int i = 0; i < list.getLength(); i++){
System.out.println("XMLParser: " + list.item(i).getFirstChild().getNodeValue());
}
System.out.println("System.out: " + xml);
输出结果为:
XMLParser: Nguyá»n Thá» Ngân
System.out: <?xml version="1.0" encoding="UTF-8"?><person><name>Nguyển Thị Ngân</name></person>
我解释说,字符混乱与通过System.out打印无关。
这可能是什么问题?
答案 0 :(得分:0)
我认为这个问题与Thomas Broyer所描述的一样。它不能是chooban所说的,因为打印原始XML按预期工作。您可以尝试使用XML转义码替换unicodes:
StringBuilder xmlEscaped = new StringBuilder();
for(int i = 0; i < xml.length(); i++) {
char c = xml.charAt(i);
if (c < 127) {
xmlEscaped.append(c);
} else {
xmlEscaped.append("&#" + ((int) c) + ";");
}
}
Document doc = XMLParser.parse(xmlEscaped.toString());