gpt4 book ai didi

java - 如何在 javax.xml.transform.Transformer.transform 的输出中保留输入声明的编码? (例如避免将 UTF-16 更改为 UTF-8)

转载 作者:数据小太阳 更新时间:2023-10-29 01:55:06 27 4
gpt4 key购买 nike

假设这个输入 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()告诉您输入文档使用哪种编码的方法 - 您可以将其设置为输出编码。

关于java - 如何在 javax.xml.transform.Transformer.transform 的输出中保留输入声明的编码? (例如避免将 UTF-16 更改为 UTF-8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4855678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com