PRB: El analizador XML no puede analizar documentos UTF-7


Síntomas


Al intentar cargar un archivo XML guardado como UTF-7 (una transferencia en el formato de codificación de Unicode), el analizador XML en Internet Explorer genera el siguiente mensaje de error:
No válido en el nivel superior del documento.
El mismo error también se produce al utilizar el analizador MSXML de secuencia de comandos del servidor o del cliente.

Causa


Versiones del analizador MSXML antes de MSXML 2.6 no admiten UTF-7.

Resolución


Para resolver este problema, guarde los documentos XML como UTF-8, el formato de codificación de transferencia preferida para Unicode.MSXML 2.6 o posterior es compatible con codificación UTF-7.

Estado


Este comportamiento es una característica del diseño de la aplicación.

Más información


Aunque Unicode es un juego que representa casi todos los idiomas del mundo de caracteres uniforme, hay muchas representaciones de byte o formatos de transformación, que se puede utilizar un archivo Unicode. El formato más popular es UTF-8, que representa los caracteres Unicode como una secuencia de uno a cuatro bytes de 8 bits. UTF-7 es un formato de transformación de 7 bits definido para permitir el texto pase a través de puertas de enlace de correo que asumen ASCII y limpiar el bit alto de mensajes de texto Unicode. Basado en el estándar XML 1.0, sección 4.3.3, un archivo XML válido es necesario que sea uno de los siguientes:
  • Un archivo Unicode en formato UTF-8.
  • Un archivo Unicode en formato UTF-16.
  • Un archivo de otra codificación de caracteres (por ejemplo, ASCII) que tiene como sus primeros bytes el
UTF-7 no utiliza la marca de orden de bytes. Además, UTF-7 se convierte el XML especial de caracteres < a + ADw, que termina siendo el primer carácter de la UTF-7 codificado de documento XML. Dado que esto no es compatible con el estándar XML, MSXML se niega a cargar estos archivos. Muchos editores de texto y procesadores de textos permiten guardar archivos de texto Unicode, conocidos como texto codificado en Microsoft Word, en muchas codificaciones de transferencia diferentes, incluidos UTF-7. Así que si guarda un documento de Word como "texto codificado UTF-7", rechazará MSXML para cargarla por las razones expuestas.

Pasos para reproducir el comportamiento

  1. Crear un archivo XML sencillo en Word 2000:
    <?xml version="1.0"?><MyTag><EmbeddedTag name1="value"/></MyTag>
  2. Guarde el archivo como texto codificado. Si Word le pregunta si desea perder el formato, haga clic en . Word le pedirá que para utilizar un formato de codificación. Seleccione UTF-7y, a continuación, guarde el documento como nombre de archivo del cap TestUTF7.xml.
  3. Nombre de archivo de carga cap TestUTF7.xml en Internet Explorer 5. Recibirá el siguiente mensaje de error:
    No válido en el nivel superior del documento. Línea 1, posición 1 + ADw-? xml versión + AD0AIg - 1.0 + ACI-? + AD4-.

Referencias


Para el más reciente desarrollo de Software Global de Microsoft http://www.unicode.org/ el estándar Unicode más reciente.
Para obtener más información acerca de cómo desarrollar soluciones basadas en Web para Microsoft Internet Explorer, visite los siguientes sitios Web de Microsoft:(c) Microsoft Corporation 2000, Reservados todos los derechos. Contribuciones por Jay Andrew Allen, Microsoft Corporation.