我有一个以UTF-8编码的XSD文件,并且任何运行它的文本编辑器都不会在文件的开头显示任何字符,但是当我拉动它时在Visual Studio的调试器中,我清楚地看到文件前面有一个空框。XML - 根目录下的数据无效
我也得到了错误:
在根级别数据是无效的。 1号线,位置1
任何人都知道这是什么吗?
更新:已编辑的帖子以限定文件类型。这是由Microsoft的XSD创建者创建的XSD文件。
我有一个以UTF-8编码的XSD文件,并且任何运行它的文本编辑器都不会在文件的开头显示任何字符,但是当我拉动它时在Visual Studio的调试器中,我清楚地看到文件前面有一个空框。XML - 根目录下的数据无效
我也得到了错误:
在根级别数据是无效的。 1号线,位置1
任何人都知道这是什么吗?
更新:已编辑的帖子以限定文件类型。这是由Microsoft的XSD创建者创建的XSD文件。
事实证明,答案是我看到的是一个Byte Order Mark,它是一个字符,用于告诉正在加载文档的任何内容。在我的情况下,它使用utf-8编码,所以相应的BOM是EF BB BF
,如下所示。要删除它,我在Notepad++中打开它并单击“无BOM中的UTF-8编码”,如下所示:
。
要真正看到BOM,我必须在TextPad中以Binary模式打开它,并进行了Google search for "EF BB BF
"。
我花了约8小时,找出这是什么导致它,所以我想我会和大家一起分享。
更新:如果我读过Joel Spolsky的博文:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),那么我可能没有这个问题。
这里是你如何用vim做到这一点:
# vim file.xml
:set nobomb
:wq