2008-11-14 69 views
38

我有一个以UTF-8编码的XSD文件,并且任何运行它的文本编辑器都不会在文件的开头显示任何字符,但是当我拉动它时在Visual Studio的调试器中,我清楚地看到文件前面有一个空框。XML - 根目录下的数据无效

Box in file

我也得到了错误:

在根级别

数据是无效的。 1号线,位置1

alt text

任何人都知道这是什么吗?

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

回答

53

事实证明,答案是我看到的是一个Byte Order Mark,它是一个字符,用于告诉正在加载文档的任何内容。在我的情况下,它使用utf-8编码,所以相应的BOM是EF BB BF,如下所示。要删除它,我在Notepad++中打开它并单击“无BOM中的UTF-8编码”,如下所示:

Saving in NotePad++

要真正看到BOM,我必须在TextPad中以Binary模式打开它,并进行了Google search for "EF BB BF"

binary mode

我花了约8小时,找出这是什么导致它,所以我想我会和大家一起分享。

更新:如果我读过Joel Spolsky的博文:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),那么我可能没有这个问题。

28

这里是你如何用vim做到这一点:

# vim file.xml 
:set nobomb 
:wq