2008-11-14 71 views
38

我有一個以UTF-8編碼的XSD文件,並且任何運行它的文本編輯器都不會在文件的開頭顯示任何字符,但是當我拉動它時在Visual Studio的調試器中,我清楚地看到文件前面有一個空框。XML - 根目錄下的數據無效

Box in file

我也得到了錯誤:

在根級別

數據是無效的。 1號線,位置1

alt text

任何人都知道這是什麼嗎?

更新:已編輯的帖子以限定文件類型。這是由Microsoft的XSD創建者創建的XSD文件。

回答

53

事實證明,答案是我看到的是一個Byte Order Mark,它是一個字符,用於告訴正在加載文檔的任何內容。在我的情況下,它使用utf-8編碼,所以相應的BOM是EF BB BF,如下所示。要刪除它,我在Notepad++中打開它並單擊「無BOM中的UTF-8編碼」,如下所示:

Saving in NotePad++

要真正看到BOM,我必須在TextPad中以Binary模式打開它,並進行了Google search for "EF BB BF"

binary mode

我花了約8小時,找出這是什麼導致它,所以我想我會和大家一起分享。

更新:如果我讀過Joel Spolsky的博文:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),那麼我可能沒有這個問題。

28

這裏是你如何用vim做到這一點:

# vim file.xml 
:set nobomb 
:wq