从 UTF-8 编码的 XML 源生成 ISO-8859-1 编码的文本输出
Posted
技术标签:
【中文标题】从 UTF-8 编码的 XML 源生成 ISO-8859-1 编码的文本输出【英文标题】:Producing ISO-8859-1-encoded text output from a UTF-8-encoded XML source 【发布时间】:2014-04-26 00:46:51 【问题描述】:我在使用 XSLT(使用 Oxygen 运行转换)时遇到了困难。
例如,当源包含短划线时,Oxygen 会抛出错误,“Output character not available in this encoding (decimal 8211)”。
破折号是 ISO-8859-1 字符集中可用的字符,处理器知道源是用 UTF-8 编码的(来自其 XML 声明)。我的 XSLT 包含
<xsl:output method="text" encoding="ISO-8859-1"/>
那么为什么不简单地将 UTF-8 编码的字符替换为 ISO-8859-1 编码的字符呢?我可以理解为什么 Unicode 中可用但 ISO-8859-1 中不可用的字符可能会导致问题,但为什么两者都可用?
有直接的解决方案吗?
感谢您的任何建议。
【问题讨论】:
您使用哪个版本的 XSLT?您也可以显示您的 XML 输入吗? 【参考方案1】:据我所知,ISO-8859-1 不包含 Unicode 字符 8211/U2013,只有 Windows-1252 包含。所以 oXygen 或其 XSLT 处理器对这个错误是正确的。
【讨论】:
是的,你是对的 - 看起来我被误导了。当我添加替换功能时:以上是关于从 UTF-8 编码的 XML 源生成 ISO-8859-1 编码的文本输出的主要内容,如果未能解决你的问题,请参考以下文章
PHP:simplexml_load_file 从使用 UTF-8 编码的 XML 文件中获取奇怪的字符