使用GWT XMLParser解析后,UTF-8字符已损坏

时间:2012-05-18 15:03:59

标签: xml parsing gwt utf-8

我现在还没看透。这应该是标准的:我得到一个带有一些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打印无关。

这可能是什么问题?

1 个答案:

答案 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());