我有一个用UTF-8编码的XSD文件,我运行它的任何文本编辑器都没有在文件开头显示任何字符,但是当我在Visual Studio的调试器中提取它时,我清楚了看到文件前面的空框。

我也得到错误:

根级别的数据无效。第1行,第1位。

任何人都知道这是什么?

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

有帮助吗?

解决方案

事实证明,答案是我所看到的是字节顺序标记 ,这是一个字符,告诉任何正在加载文档的内容。在我的例子中,它是用utf-8编码的,所以相应的BOM是EF BB BF,如下所示。要删除它,我在 Notepad ++ 中打开它,然后点击<!> ;在没有BOM <!>的情况下编码为UTF-8,如下所示:

要实际查看BOM,我必须在二进制模式下在 TextPad 中打开它,然后进行

我花了大约8个小时才知道这是造成它的原因,所以我想我会和大家分享这个。

更新:如果我读过Joel Spolsky的博文: 绝对最低每个软件开发人员绝对,必须知道关于Unicode和字符集(没有借口!) ,那么我可能没有遇到过这个问题。

其他提示

这是你用vim做的:

# vim file.xml
:set nobomb
:wq
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top