为什么将输出编码设置为 utf-8 时,输出文件中的 iso-8859-1 字符未转换为 utf-8?
我有一个 iso-8859-1 编码的 xml 输入文件,并声明了编码。我想以 utf-8 输出它。我的理解是在 xslt 文件中设置输出编码应该管理字符转换。
我的理解错了吗?如果不是,为什么下面的简单测试用例会在 utf-8 声明的输出文件中输出 iso-8859-1 字符?
我的输入文件如下所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
<data>ö</data>
我的变换如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output encoding="UTF-8" />
<xsl:template match="/">
<result>
<xsl:value-of select="." />
</result>
</xsl:template>
</xsl:stylesheet>
从命令行使用 saxon9he,我的结果如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<result>ö</result>
根据 BabelPad,我的结果文件中的 ö 是 0xF6,这是一个无效的 utf-8 字符。ö 似乎没有受到转换的影响。
谢谢你的帮助!