2014-03-19 23 views
1

我在使用XSLT从UTF-8编码的XML源生成ISO-8859-1编码的文本输出时遇到困难(使用氧气进行转化)。从UTF-8编码的XML源生成ISO-8859-1编码的文本输出

例如,当源包含一个破折号时,氧气会抛出一个错误,“输出字符在此编码中不可用(小数点8211)”。

en破折号是ISO-8859-1字符集中可用的字符,并且处理器知道源以UTF-8编码(来自其XML声明)。我的XSLT包含

<xsl:output method="text" encoding="ISO-8859-1"/> 

那么,为什么它不能简单地由ISO-8859-1编码的字符替换UTF-8编码的字符?我可以理解为什么字符在Unicode中可用,但在ISO-8859-1中不可能导致问题,但为什么字符在两者中都可用?

有没有简单的解决方案?

谢谢你的任何建议。

+0

您使用的是哪个版本的XSLT?你还可以显示你的XML输入吗? –

回答

2

据我所知,ISO-8859-1不包含Unicode字符8211/U2013,只有Windows-1252没有。所以oXygen或者它的XSLT处理器对这个错误是正确的。

+0

是的,你是对的 - 看起来我被误导了。当我添加替换函数时,因此: 成功完成转换并用连字符替换了连字符。 – MDow