有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ISO88591编码的XML文档中Unicode字符的java解码

使用javax。xml。transform我创建了这个ISO-8859-1文档,其中包含两个&#-编码字符

<?xml version="1.0" encoding="ISO-8859-1"?>
<xml>&#50108; and &#50102;</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) 个答案

  1. # 1 楼答案

    XML解析器将识别“&;#…”转义语法并正确返回쎼 和쎶 它的API用于元素的文本。 例如,在Java中是组织。w3c。多姆。要素标记名为“xml”的元素的getTextContent()方法将返回带有该Unicode字符的字符串,尽管xml文档本身是ISO-8859-1