Era*_*dan 5 java xml xslt character-encoding
假设这个输入XML
<?xml version="1.0" encoding="UTF-16"?>
<test></test>
Run Code Online (Sandbox Code Playgroud)
编写这些代码行:
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();
Run Code Online (Sandbox Code Playgroud)
输出这个XML:
<?xml version="1.0" encoding="UTF-8"?>
<test></test>
Run Code Online (Sandbox Code Playgroud)
(声明的UTF- 16编码转换为默认的UTF- 8)
我知道我可以明确要求输出UTF-16
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-16");
Run Code Online (Sandbox Code Playgroud)
但问题是,如何使输出编码自动与输入相同?
为此,您必须使用比StreamSource
. 例如, aStAXSource
接受一个XMLStreamReader
,它具有getCharacterEncodingScheme()
告诉您输入文档使用哪种编码的方法 - 您可以将其设置为输出编码。