Java Xml Transformation избегает суррогатных единиц кода, которые представляют дополнительные символы

Я выполняю веб-приложение в контейнере сервлетов Tomcat 8.0. В запросе я пытаюсь преобразовать входные данные в XML с кодом ниже. Первый символ входных данных - это дополнительный символ Unicode U+16980, представленный в виде пары символов \ ud81a \ udd80, а второй символ - еще один дополнительный символ U+16990, представленный в виде пары символов \ud81a\udd90.

    String text = "    �  �";
    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
    Document document = documentBuilder.newDocument();

    Element root = document.createElement("root");
    document.appendChild(root);
    Element node = document.createElement("sofa");

    node.appendChild(document.createTextNode(text));

    root.appendChild(node);

    Source xmlSource = new DOMSource(document);

    // create StreamResult for transformation result
    javax.xml.transform.Result result = new StreamResult(new FileOutputStream("text.xml"));

    // create TransformerFactory
    TransformerFactory transformerFactory = TransformerFactory.newInstance();

    // create Transformer for transformation
    Transformer transformer = transformerFactory.newTransformer();

    // transform and deliver content to client
    transformer.transform(xmlSource, result);

Я ожидал: <root><sofa>&#92544; &#92560; � �</sofa></root>

Но вместо этого я получаю: <root><sofa>&#55322;&#56704; &#55322;&#56720; � �</sofa> </root>

0 ответов

Другие вопросы по тегам