ISO88591编码的XML文档中Unicode字符的java解码
使用javax。xml。transform我创建了这个ISO-8859-1文档,其中包含两个&#-编码字符쎼
和쎶
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xml>쎼 and 쎶</xml>
问题:符合标准的XML阅读器将如何解释쎼 和쎶,
- 就像《平原》一样。。。字符串(未转换回
쎼
和쎶
) - 作为
쎼
和쎶
生成XML的代码:
public void testInvalidCharacter() {
try {
String str = "\uC3BC and \uC3B6"; // 쎼 and 쎶
System.out.println(str);
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Element root = doc.createElement("xml");
root.setTextContent(str);
doc.appendChild(root);
DOMSource domSource = new DOMSource(doc);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, StandardCharsets.ISO_8859_1.name());
StringWriter out = new StringWriter();
transformer.transform(domSource, new StreamResult(out));
System.out.println(out.toString());
} catch (ParserConfigurationException | DOMException | IllegalArgumentException | TransformerException e) {
e.printStackTrace(System.err);
}
}
# 1 楼答案
XML解析器将识别“&;#…”转义语法并正确返回쎼 和쎶 它的API用于元素的文本。 例如,在Java中是组织。w3c。多姆。要素标记名为“xml”的元素的getTextContent()方法将返回带有该Unicode字符的字符串,尽管xml文档本身是ISO-8859-1