假设这个输入XML
<?xml version="1.0" encoding="UTF-16"?>
<test></test>
编写这些代码行:
StreamSource source = new StreamSource(new StringReader(/* the above XML*/));
StringWriter stringWriter = new StringWriter();
StreamResult streamResult = new StreamResult(stringWriter);
TransformerFactory.newInstance().newTransformer().transform(source, streamResult);
return stringWriter.getBuffer().toString();
输出这个XML:
<?xml version="1.0" encoding="UTF-8"?>
<test></test>
(声明的UTF-16编码转换为默认的UTF-8)
我知道我可以明确要求输出UTF-16
transformer.setoutputProperty(OutputKeys.ENCODING, "UTF-16");
解决方法:
要做到这一点,你必须使用比StreamSource更复杂的东西.例如,StAXSource
采用XMLStreamReader,它具有getCharacterEncodingScheme()
方法,告诉您输入文档使用了哪种编码 – 您可以将其设置为输出enocding.