我有一个用UTF-8编码的XSD文件,我运行它的任何文本编辑器都没有在文件开头显示任何字符,但是当我在Visual Studio的调试器中提取它时,我清楚地看到一个空的文件前面的框.
我也得到错误:
根级别的数据无效.第1行,第1位.
有谁知道这是什么吗?
更新:编辑帖子以限定文件类型.这是由Microsoft的XSD创建者创建的XSD文件.
事实证明,答案是我所看到的是一个字节顺序标记,它是一个字符,它告诉正在加载文档的内容是什么.在我的例子中,它是用utf-8编码的,所以相应的BOM EF BB BF
如下所示.要删除它,我在Notepad ++中打开它,然后单击"在没有BOM的UTF-8中编码",如下所示:
.
要实际查看BOM,我必须在二进制模式下在TextPad中打开它,并进行Google搜索" EF BB BF
".
我花了大约8个小时才知道这是造成它的原因,所以我想我会和大家分享这个.
更新:如果我读过Joel Spolsky的博文:绝对最低限度每个软件开发人员绝对必须知道Unicode和字符集(没有借口!),那么我可能没有遇到过这个问题.
这是你用vim做的:
# vim file.xml :set nobomb :wq