繁体   English   中英

在ISO-8859-1编码的XML文档中解码Unicode字符

[英]Decoding of Unicode characters in a ISO-8859-1 encoded XML document

我使用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);
    }
}

XML解析器将识别“&#...”转义语法,并正确返回쎼和쎶及其API来表示元素的文本。 例如,在Java中,标签为“ xml”的Element的org.w3c.dom.Element.getTextContent()方法将返回带有该Unicode字符的String,尽管您的XML文档本身是ISO-8859-1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM