Создание XML-кода в кодировке UTF-8 на Java - PullRequest
1 голос
/ 30 сентября 2011

Это код, который я использую

try {
String str = "\uC3BC and \uC3B6 and <&> für";

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.newDocument();
Element root = doc.createElement("test");
root.setAttribute("attribute", str);
doc.appendChild(root);

DOMSource domSource = new DOMSource(doc);
// FileOutputStream out = new FileOutputStream("test.xml");
Writer out = new OutputStreamWriter(new FileOutputStream("test.xml"), "UTF8");

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(domSource, new StreamResult(out));

out.close();
} catch (Exception e) {
e.printStackTrace();
}

Выход

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<test attribute="쎼 and 쎶 and &lt;&amp;&gt; für"/>

Я хочу выводить

attribute="&#xc3bc and &#xc3b6 ..."

Как мне этого добиться?

Я использую Java 1.6-20

Это похоже на Создание правильного XML с кодировкой Java и UTF-8

1 Ответ

6 голосов
/ 30 сентября 2011

Если вы не хотите, чтобы XML-кодировался как UTF-8, вам не следует указывать преобразователю делать это.

Если я правильно понимаю ваш вопрос

transformer.setOutputProperty(OutputKeys.ENCODING, "US-ASCII");

должен выдавать желаемый результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...