.net xml visual-studio xsd byte-order-mark

.net - XML: datos en el nivel de raíz no son válidos



visual-studio xsd (2)

así es como lo haces con vim:

# vim file.xml :set nobomb :wq

Tengo un archivo XSD que está codificado en UTF-8, y cualquier editor de texto que lo ejecute no muestra ningún carácter al principio del archivo, pero cuando lo arranco en el depurador de Visual Studio, veo claramente un vacío cuadro en frente del archivo.

También recibo el error:

Los datos a nivel de la raíz no es válida. Línea 1, posición 1.

Alguien sabe qué es esto?

Actualización: Publicación editada para calificar el tipo de archivo. Es un archivo XSD creado por el creador de XSD de Microsoft.


Resulta que la respuesta es que lo que estoy viendo es una marca de orden de bytes , que es un personaje que dice lo que está cargando el documento en que está codificado. En mi caso, está codificado en utf-8, por lo que el correspondiente BOM fue EF BB BF , como se muestra a continuación. Para eliminarlo, lo abrí en Notepad++ y hice clic en "Codificar en UTF-8 sin BOM", como se muestra a continuación:

.

Para ver realmente la lista de materiales, tuve que abrirla en TextPad en modo binario: y conduje una búsqueda en Google para " EF BB BF " .

Me tomó alrededor de 8 horas descubrir que esto era lo que estaba causando, así que pensé en compartir esto con todos.

Actualización : Si hubiera leído la publicación de Joel Spolsky en el blog: El mínimo absoluto. Todo desarrollador de software Absolutamente, definitivamente debe saber sobre Unicode y conjuntos de caracteres (¡Sin excusas!) , Entonces podría no haber tenido este problema.