40

我有一个以 UTF-8 编码的 XSD 文件,我运行它的任何文本编辑器都不会在文件开头显示任何字符,但是当我在 Visual Studio 的调试器中将其拉起时,我清楚地看到一个空的文件前面的框。

档案盒

我也得到错误:

根级别的数据无效。第 1 行,位置 1。

替代文字

有谁知道这是什么吗?

更新:编辑帖子以限定文件类型。它是由 Microsoft 的 XSD 创建者创建的 XSD 文件。

4

2 回答 2

58

事实证明,答案是我看到的是一个字节顺序标记,它是一个字符,它告诉加载文档的任何内容它的编码内容。在我的例子中,它是用 utf-8 编码的,所以对应的BOM 为EF BB BF,如下图所示。要删除它,我在Notepad++中打开它并点击“Encode in UTF-8 without BOM”,如下图所示:

在记事本++中保存.

要实际查看 BOM,我必须在TextPad中以二进制模式打开它:并在Google 上搜索“ EF BB BF

二进制模式

我花了大约 8 个小时才发现这是导致它的原因,所以我想我会与大家分享这个。

更新:如果我阅读了 Joel Spolsky 的博客文章:每个软件开发人员绝对、肯定必须了解 Unicode 和字符集(没有借口!)的绝对最低要求,那么我可能不会遇到这个问题。

于 2008-11-14T21:15:28.627 回答
29

这是使用 vim 的方法:

# vim file.xml
:set nobomb
:wq
于 2008-11-18T22:58:51.817 回答