我有一个以UTF-8编码的XSD文件,任何运行它的文本编辑器不会在文件开头显示任何字符,但是当我在Visual Studio的调试器中将其拉出来时,我清楚地看到一个空框在文件前面。
我也得到的错误:
根级别的数据无效。第1行第1位。
任何人都知道这是什么?
原来,答案是,我看到的是一个
Byte Order Mark,这是一个字符,告诉任何加载的文档它是什么编码。在我的情况下,它是编码utf-8,所以相应的BOM EF BB BF,如下图所示。要删除它,我在
Notepad++打开它,并点击“编码在UTF-8没有BOM”,如下所示:
。
要实际看到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!),那么我可能没有这个问题。