1

私は今、自分自身を見通していないだけです。これは標準である必要があります。解析したいUTF-8文字を含むXMLを取得します。

次に例を示します。 <person><name>Nguyển Thị Ngân</name></person>

これをGWTの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

問題はThomasBroyerが説明したとおりだと思います。生のXMLの印刷は期待どおりに機能するため、choobanが言うことではありません。UnicodeをXMLエスケープコードに置き換えてみることができます。

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 に答える