【发布时间】:2011-06-18 20:19:26
【问题描述】:
假设这个输入 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");
但问题是,如何让输出编码自动和输入一样?
【问题讨论】:
-
如果不先手动查看输入流,我认为这是不可能的。顺便说一句,如果您使用 XML 标头的编码,则不能使用字符串,只能使用字节数组。
-
出于好奇:为什么存在这个要求?如果使用 UTF-8 编码,生成的 XML 应该同样有效。
标签: java xml character-encoding xslt