XMLStreamWriter #writeCharacters(...)
writeCharacters(...)方法用于转义诸如&,<,>和“之类的字符。 (来自http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/StAX4.html)
但是当我写一些中文,日文字符和输出XML时 文件不是以“UTF-8”编码,而是“GBK”或“Shift-JIS”。中文,日文字符也被转义,就像
一样“汉语,英语,にほんご”---> “汉语,English,にほんご”
无论如何要解决它?
public static void main(String[] args) throws Exception {
// GBK
System.out.println("JVM default charset = " + Charset.defaultCharset());
String s = "汉语, English, にほんご";
XMLOutputFactory output = XMLOutputFactory.newInstance();
output.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, false);
OutputStream out = new FileOutputStream("C:/aa.txt");
XMLStreamWriter writer = output.createXMLStreamWriter(out, "UTF-8");
// When output encoding is "UTF-8", result is something like:
// <?xml version='1.0' encoding='UTF-8'?><a>汉语, English, にほんご</a>
// When output encoding is "GBK", result is something like:
// <?xml version='1.0' encoding='GBK'?><a>汉语, English, にほんご</a>
writer.writeStartDocument();
writer.setDefaultNamespace("http://c");
writer.writeStartElement("http://c", "a");
writer.writeCharacters(s);
writer.writeEndElement();
writer.flush();
}
答案 0 :(得分:0)
用户XMLOutputFactory.createXMLEventWriter(stream, "UTF-8")
。我相信这应该可以解决你的问题。
我没有使用过这个特定的API,但我使用了很多其他API。例如,如果编码不支持字符,则Properties.store()
方法会自动执行转义。