1

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

这里可能是什么问题?

4

1 回答 1

0

我认为这个问题正如 Thomas Broyer 所描述的那样。这不可能是 chooban 所说的,因为打印原始 XML 可以按预期工作。您可以尝试用它们的 XML 转义码替换 unicode:

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());
于 2012-05-19T11:42:42.000 回答