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>𖦀 𖦐 � �</sofa></root>
Но вместо этого я получаю: <root><sofa>�� �� � �</sofa>
</root>