2008-11-14 7 views
38

J'ai un fichier XSD codé en UTF-8, et tout éditeur de texte que je lance ne montre aucun caractère au début du fichier, mais quand je le tire Dans le débogueur de Visual Studio, je vois clairement une boîte vide devant le fichier.XML - Les données au niveau racine sont invalides

Box in file

Je reçois aussi l'erreur:

données au niveau de la racine est invalide. Ligne 1, 1.

alt text

Quelqu'un sait ce que cela est?

Mise à jour: poste édité pour qualifier le type de fichier. C'est un fichier XSD créé par le créateur XSD de Microsoft.

Répondre

53

Il s'avère que ce que je vois est un Byte Order Mark, qui est un caractère qui indique tout ce qui charge le document dans lequel il est codé. Dans mon cas, il est codé en utf-8, donc la nomenclature correspondante était EF BB BF, comme indiqué ci-dessous. Pour le retirer, je l'ai ouvert dans Notepad++ et cliqué sur « Encode en UTF-8 sans BOM », comme indiqué ci-dessous:

Saving in NotePad++.

Pour réellement voir la nomenclature, j'ai dû l'ouvrir en TextPad en mode binaire:, et a conduit un Google search for "EF BB BF".

binary mode

Il m'a fallu environ 8 heures pour savoir c'était ce qui était à l'origine, donc je pensais que je partage avec tout le monde.

Mise à jour: Si j'avais lu l'article de blog de Joel Spolsky: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!), je n'aurais peut-être pas eu ce problème.

28

est ici comment vous le faites avec vim:

# vim file.xml 
:set nobomb 
:wq 
Questions connexes