从 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 编码的文本输出的主要内容,如果未能解决你的问题,请参考以下文章

使用UTF-8生成XML文件时的字符编码问题

python 生成xml文件的时候如何设置编码为utf-8

PHP:simplexml_load_file 从使用 UTF-8 编码的 XML 文件中获取奇怪的字符

报文编码格式改为UTF-8

delphi 保存UTF-8格式的xml文件,在IE中有乱码。

PHP中SimpleXMLElement对象字符编码