如何从xml文件中删除BOM字符

时间:2008-11-17 12:27:01

标签: xml xslt unicode byte-order-mark

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

7 个答案:

答案 0 :(得分:166)

# vim file.xml
:set nobomb
:wq

答案 1 :(得分:18)

File BOM Detector(适用于Windows的免费软件)可以轻松删除字节顺序标记。

答案 2 :(得分:2)

只需要在xslt文件中添加:

<xsl:output method="text"
        encoding="ASCII"/>

答案 3 :(得分:1)

使用任何十六进制编辑器删除前两个字节。

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

我的印象是,鼓励使用Unicode以某种Unicode编码编写XML,并指定某些Unicode编码包含初始字节顺序标记。如果没有该字节顺序标记,您的文件将不再以Unicode编码正确编码,因此不再更正XML。鼓励XML处理器无法容忍,在最轻微的错误(例如不正确的Unicode编码)下立即失败。您希望打破哪种XML处理器?

显然,从UTF-8编码文档中剥离字节顺序标记会使该文档看起来是ASCII编码(而不是Unicode),而某些文本处理器只能使用ASCII编码文档。这是你正在使用的吗?

答案 6 :(得分:0)

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

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

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

稍微偏离主题,但关于文本编码的Joel's very instructive article对我来说是一个大开眼界。有很多人在编程时非常聪明,但他们坚持认为有“纯文本”或称其文本为“ASCII”或“ANSI”。如果你还没有,那么你真的需要掌握这个问题。