68

我正在使用 xsl 来控制我的 xml 文件的输出,但是正在添加 BOM 字符。

4

6 回答 6

165
# vim file.xml
:set nobomb
:wq
于 2008-11-18T22:59:37.027 回答
2

只需将其添加到您的 xslt 文件中:

<xsl:output method="text"
        encoding="ASCII"/>
于 2011-10-05T16:40:46.967 回答
1

只需使用任何十六进制编辑器剥离前两个字节。

于 2008-11-17T12:48:02.923 回答
1

使用 XSLT 从字符串中删除 BOM 符号非常简单:

<xsl:value-of select="translate(StringWithBOM,'','')"/>

于 2012-04-25T11:04:12.510 回答
0

您的 XSL 设置使用什么输出编码?输入文档是什么编码?输入来自哪里,同时在哪里保存/上传/下载?

如果没有指定其他内容,XML 和 XSL 应该默认使用 UTF-8。但很明显,这里出了点问题。

可能发生的一件事是,XML 正在由 Web 服务器提供服务,该服务器默认设置为在 ISO-8859-1 中提供服务,这是一个非常好的默认设置...... pre-Unicode。

有点离题,但Joel关于文本编码的非常有启发性的文章让我大开眼界。有很多人在编程方面非常聪明,但他们坚持认为存在诸如“纯文本”之类的东西,或者称他们的文本为“ASCII”或“ANSI”。如果您还没有解决这个问题,那么您确实需要解决这个问题。

于 2008-11-17T23:19:27.097 回答
0

我的印象是鼓励以 Unicode 和某些 Unicode 编码来编写 XML,并且某些 Unicode 编码被指定为包含初始字节顺序标记。如果没有该字节顺序标记,您的文件将不再以 Unicode 编码正确编码,因此不再正确的 XML。鼓励 XML 处理器不宽容,在最轻微的错误(例如不正确的 Unicode 编码)上立即失败。您希望破解哪些类型的 XML 处理器?

显然,从 UTF-8 编码的文档中去除字节顺序标记会使该文档看起来是 ASCII 编码的(不是 Unicode),并且一些文本处理器只能使用 ASCII 编码的文档。这是你的工作吗?

于 2008-11-17T12:58:00.500 回答