XML – os dados no nível da raiz são inválidos

Eu tenho um arquivo XSD que é codificado em UTF-8, e qualquer editor de texto que eu execute não mostra nenhum caractere no início do arquivo, mas quando eu o puxo para cima no depurador do Visual Studio, vejo claramente um vazio checkbox na frente do arquivo.

Caixa em arquivo

Eu também recebo o erro:

Dados no nível da raiz são inválidos. Linha 1, posição 1.

texto alternativo

Alguém sabe o que é isso?

Atualização: postagem editada para qualificar o tipo de arquivo. É um arquivo XSD criado pelo criador XSD da Microsoft.

Acontece que a resposta é que o que estou vendo é uma marca de ordem de byte , que é um caracter que informa ao que está carregando o documento em que está codificado. No meu caso, ele é codificado em utf-8, de modo que o correspondente BOM foi EF BB BF , como mostrado abaixo. Para removê-lo, abri-lo no Notepad ++ e cliquei em “Codificar em UTF-8 sem BOM”, como mostrado abaixo:

Salvando no NotePad ++ .

Para realmente ver o BOM, tive que abri-lo no TextPad no modo Binary: e fiz uma pesquisa no Google por ” EF BB BF ” .

modo binário

Demorei cerca de 8 horas para descobrir que era isso que estava causando isso, então pensei em compartilhar isso com todos.

Update : Se eu tivesse lido o post de Joel Spolsky: O Mínimo Absoluto Todo Desenvolvedor de Software Absolutamente, Positivamente Deve Saber Sobre Unicode e Conjuntos de Caracteres (Sem desculpas!) , Então eu poderia não ter tido esse problema.

aqui está como você faz isso com o vim:

 # vim file.xml :set nobomb :wq