我在使用XSLT(使用Oxygen运行转换)从UTF-8编码的XML源生成ISO-8859-1编码的文本输出时遇到困难。
例如,当源包含一个短划线时,Oxygen会抛出一个错误,“输出字符在此编码中不可用(十进制8211)”。
短划线是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 :(得分:2)
据我所知,ISO-8859-1不包含Unicode字符8211 / U2013,只有Windows-1252。所以oXygen或其XSLT处理器对这个错误是正确的。