我有一个以 UTF-8 编码的 XSD 文件,我运行它的任何文本编辑器都没有在文件的开头显示任何字符,但是当我在 Visual Studio 的调试器中将它拉出来时,我清楚看到文件前面有一个空框。
我也得到了错误:
根级别的数据无效。第 1 行,位置 1。
有人知道这是什么吗?
更新:编辑帖子以限定文件类型。它是由 Microsoft 的 XSD 创建者创建的 XSD 文件。
最佳答案
事实证明,答案是我看到的是 Byte Order Mark ,这是一个字符,它告诉加载文档的内容是什么。在我的例子中,它是用 utf-8 编码的,所以相应的 BOM 是 EF BB BF
,如下所示。要删除它,我在 Notepad++ 中将其打开然后点击“Encode in UTF-8 without 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!) ,那么我可能没有遇到过这个问题。
关于.net - XML - 根级别的数据无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/291455/