【问题标题】:XML to CSV using XSLT - preserve polish letters使用 XSLT 将 XML 转换为 CSV - 保留波兰字母
【发布时间】:2017-10-03 23:28:40
【问题描述】:

我正在使用 XSLT 将 XML 转换为 CSV。我在 XSLT 中的输出行是:

<xsl:output method="text" encoding="UTF-8" />

XML 中有很多波兰字母,这就是问题所在。当我使用 XML 工具插件从 Notepad++ 转换 XML 时,输出文件(未保存)正确显示波兰字母,当您单击编码时,它显示 UTF-8 without BOM。当我将其保存为 CSV 时 - excel 不显示波兰字母。当我将 Notepad++ 中的文件编码更改为 UTF-8 with BOM - 它在 Excel 中正常工作。

我以为这都是 Notepad++ 的问题,但是当我在 XmlSpy 中转换它时,输出文件也不正确,就像在 Excel 中一样。

我想知道是否可以在文件开头添加UTF-8 BOM 标志(来自 XSLT,而不是手动),但我能找到的只是如何删除它们,我什至不知道这是否会解决我的问题。我要疯了。

顺便说一句,我正在使用 XSLT 1.0。我在 XmlSpy 中的编码是默认的,即 UTF-8。输入 XML 的编码也是 UTF-8。

【问题讨论】:

  • Excel 中存在这样的问题。如果即使像 Notepad++ 这样的小型项目在打开时也能正确识别出文件编码,微软应该会为他们无法在其应用程序中实现等效功能而感到尴尬。

标签: xml csv xslt utf-8 character-encoding


【解决方案1】:

由于您使用的是 XSLT 1.0,因此您可以显式输出 ...

<xsl:template match="/">
  <xsl:value-of select="'&#xFEFF;'"/>
  <xsl:apply-templates/>
</xsl:template>

如果您使用的是 XSLT 2.0,您可以在 xsl:output 上使用 byte-order-mark="yes"

【讨论】:

  • 有效!我用&lt;xsl:text&gt; 尝试了类似的方法,使用不同的转义选项,但没有任何效果。谢谢!
猜你喜欢
  • 2018-05-31
  • 2019-02-02
  • 2017-05-23
  • 2011-10-28
相关资源
最近更新 更多