无法识别撒克逊输入编码?

Saxon input encoding not recognized?

我在 Saxon xslt 处理器输出的 utf-8 文本中收到奇怪的字符。

输入 xml 的标题是

<?xml version="1.0" encoding="windows-1252"?>

它包含如下字符串(在 notepad++ 中显示,右下方显示 Windows-1252 编码)

“abc”

转换样式表包含

<xsl:output method="text" encoding="utf-8" />

但输出包含(在 notepad++ 中显示,右下方显示 UTF-8 编码)

�abc�

而不是 UTF-8 编码

“abc”

知道我错过了什么吗?

p.s.: 当我使用 notepad++ 将 xml 输入从 windows-1252 更改为 UTF-8 时,输出编码正确,这就是我的解决方法。但是我想知道我是否遗漏了什么或者某些软件应该在字符集方面进行改进。

我怀疑虽然输入被标记为 windows-1252,但实际上并不是 Windows-1252。

首先,尝试找出问题是在输入上还是在序列化上。您可以通过在 XSLT 代码中使用 string-to-codepoints() 来查看已解析的节点树中存在哪些实际代码点。

如果是输入问题,那是 XML 解析器而不是 Saxon 本身的责任,所以这取决于您使用的是哪个 XML 解析器。