XSLT编码问题,结果中有问号

XSLT编码问题,结果中有问号,xslt,encoding,saxon,Xslt,Encoding,Saxon,我试图运行XSLT转换,但是像ëöï这样的字符在输出中被文字“?”替换(我用十六进制编辑器检查)。源文件具有正确的字符,样式表具有: <xsl:output encoding="UTF-8" indent="yes" method="xml"/> 我还缺什么 如果有必要的话,我将使用萨克森作为转换器。问题很可能在于您调用转换器的方式。我的猜测是,如果您使用java-jar saxon.jar调用它,它会工作得很好 通常,当您使用采用InputStream/OutputStrea

我试图运行XSLT转换,但是像ëöï这样的字符在输出中被文字“?”替换(我用十六进制编辑器检查)。源文件具有正确的字符,样式表具有:

<xsl:output encoding="UTF-8" indent="yes" method="xml"/>

我还缺什么


如果有必要的话,我将使用萨克森作为转换器。

问题很可能在于您调用转换器的方式。我的猜测是,如果您使用java-jar saxon.jar调用它,它会工作得很好

通常,当您使用采用InputStream/OutputStream的XML工具时,这些工具将确保编码正确


当您混合使用流和写入程序时,必须确保从一个到另一个的编码与您告诉XSLT处理器生成的编码匹配。始终显式设置编码。可能存在默认值,但在编码方面,它们往往是错误的。

正确的方法是什么?我目前正在做
TransformerFactory.newInstance().newTransformer()
transformer.transform(源代码,结果)
。什么是
result
以及它是如何写入磁盘的?result=new StreamResult(new OutputStreamWriter(new FileOutputStream(“/tmp/foo.xml”));每次使用从字节到字符的API或相反的API时,都应该查找编码参数。任何默认值都是错误的。