我有一个用UTF-8编码的XSD文件,我运行它的任何文本编辑器都没有在文件开头显示任何字符,但是当我在Visual Studio的调试器中提取它时,我清楚了看到文件前面的空框。
我也得到错误:
根级别的数据无效。第1行,第1位。
任何人都知道这是什么?
更新:编辑帖子以限定文件类型。这是由Microsoft的XSD创建者创建的XSD文件。
答案 0 :(得分:54)
事实证明,答案是我所看到的是一个Byte Order Mark,这是一个字符,告诉任何正在加载文档的内容。在我的情况下,它编码为utf- 8,因此相应的BOM为EF BB BF
,如下所示。要删除它,我在Notepad++打开它,然后点击“在没有BOM的UTF-8中编码”,如下所示:
。
要实际查看BOM,我必须在二进制模式的TextPad中打开它,然后执行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!),那么我可能没有遇到过这个问题。
答案 1 :(得分:29)
这是你用vim做的:
# vim file.xml
:set nobomb
:wq