XML-les données au niveau de la racine sont invalides
j'ai un fichier XSD qui est encodé en UTF-8, et tout éditeur de texte que je l'exécute ne montre aucun caractère au début du fichier, mais quand je le sors dans le débogueur de Visual Studio, je vois clairement une boîte vide devant le fichier.
j'obtiens aussi l'erreur:
les données au niveau de la racine sont invalides. Ligne 1, position 1.
quelqu'un sait ce que c'est?
mettre à Jour le: Édité le post pour qualifier le type de fichier. C'est un fichier XSD créé par le créateur XSD de Microsoft.
2 réponses
il s'avère, la réponse est que ce que je vois est un octet marque D'ordre , qui est un caractère qui dit tout ce qui charge le document ce qu'il est encodé. Dans mon cas, il est encodé en utf-8, donc le BOM correspondant était EF BB BF
, comme montré ci-dessous. Pour l'enlever, Je l'ai ouvert dans Notepad++ et j'ai cliqué sur "Encoder dans UTF-8 sans BOM", comme montré ci-dessous:
.
pour voir effectivement le BOM, j'ai dû l'ouvrir dans TextPad en mode binaire:, et a mené une recherche Google pour " EF BB BF
.
il m'a fallu environ 8 heures pour découvrir ce qui en était la cause, alors j'ai pensé que je partagerais cela avec tout le monde.
mise à jour : si J'avais lu le billet de blog de Joel Spolsky: le Minimum absolu chaque développeur de logiciel doit absolument, positivement connaître Unicode et les jeux de caractères (pas D'Excuses!) , alors je n'aurais pas eu ce problème.
voici comment vous le faites avec vim:
# vim file.xml
:set nobomb
:wq