XSLT输出BOM字符在Excel中可见

Bla*_*ack 4 xslt excel byte-order-mark

我的Java EE Web应用程序使用XSLT转换来生成CSV报告。如果我指定“UTF-16”作为对XSLT的编码(这似乎是处理在XML重音符号的唯一途径),那么我会在CSV输出的开始字节顺序标记字符

从我了解,这是正确的行为。问题是,如果在Excel中打开CSV(显示为:þÿ),则该BOM字符可见;但是,如果我在适当的文本编辑器中打开它,则该BOM字符不可见;)

如何隐藏或忽略此字符,使其不可见在Excel中打开文件时?

Sea*_*kin 5

您忘记了指定要使用的XSLT版本。

如果使用XSLT 2.0,则可以使用xsl:output元素取消BOM 。例如...

<xsl:output method="xml" byte-order-mark="no" encoding="UTF-16" indent="yes" omit-xml-declaration="yes" />
Run Code Online (Sandbox Code Playgroud)

如果您正在使用XSLT 1.0怎么办?

这里有两个选择:

  1. 升级到XSLT 2.0
  2. 将您的Excel升级到2007(有关原因,请参见此处