交叉编码XSL转换

时间:2011-06-27 16:23:30

标签: xslt encoding character-encoding

我在XML文件上做了一些操作(没什么重要的),在这种情况下XSL非常适用。 但是,我的输入文件是用UTF-8编码的,转换后的文件必须用iso-8859-1编码。 (我也不控制输入文件的编码)

一切顺利,除了utf-8中存在的一些特殊字符而不是iso-8859中的特殊字符在输出文件中被转义。

例如我有 <text>some text with a € character</text> 转化为 <text>some text with a &#8364; character</text>

输出文件中的“€”对我来说是一个问题。

由于我们必须对那些不在ISO中的特殊字符做一些事情,我首先想到用replace函数手动转换它们:replace(。,'€','euros') 但是utf-8中有这么多字符,它们不是iso,它很快就很无聊......而且很慢!

你有更好的解决方案吗? (假设我们可以删除这些字符或将它们转换为任何可行的iso字符)

提前致谢

1 个答案:

答案 0 :(得分:1)

你有吗

<xsl:output encoding="iso-8859-1" />

到位了?

因为那应该是你所需要的,真的。如果您的XSL处理器没有正确地将字符转换为目标编码,那么它就会被破坏,您需要使用另一个。

提示

  • 通常Windows-1252是人们真正在他们说ISO-8859-1时的意思。仔细检查是否适用于您。两个之间存在细微差别(特别是关于欧元符号,ISO-8859-1中不存在,但Windows-1252ISO-8859-15中存在
  • 每当XML文件中缺少XML声明<?xml version="1.0" encoding="iso-8859-1"?>时,都会假定为UTF-8编码。每当 UTF-8编码时,请务必在文件顶部放置声明。