Sintomas
Ao tentar carregar um arquivo XML salvo como UTF-7 (uma formato de codificação Unicode de transferência), o analisador XML no Internet Explorer gera a seguinte mensagem de erro:
Inválido no nível superior do documento.
O mesmo erro também ocorre ao usar o analisador MSXML no script do lado do servidor ou do cliente.
Causa
Versões do analisador MSXML antes do MSXML 2.6 não oferecem suporte a UTF-7.
Resolução
Para resolver esse problema, salve os documentos XML como UTF-8, o formato de codificação de transferência preferencial para Unicode.MSXML 2.6 ou posterior oferece suporte à codificação UTF-7.
Status
Este é o comportamento padrão.
Informações adicionais
Embora o Unicode é um conjunto que representa quase todos os idiomas do mundo de caracteres uniforme, existem várias representações de byte ou formatos de transformação, que pode usar um arquivo Unicode. O formato mais popular é o UTF-8, o que representa caracteres Unicode como uma sequência de um a quatro bytes de 8 bits. UTF-7 é um formato de transformação de 7 bits definido para permitir que o texto Unicode passar através de gateways de email que assumem ASCII e retirar o bit mais elevado de mensagens de texto. Com base no padrão XML 1.0, seção 4.3.3, um arquivo XML válido é necessário para ser um dos seguintes:
-
Um arquivo Unicode no formato UTF-8.
-
Um arquivo Unicode no formato UTF-16.
-
Um arquivo em alguma outra codificação de caracteres (por exemplo, ASCII) que tem como suas primeira bytes a
UTF-7 não usa a marca de ordem de Byte. Além disso, UTF-7 converte XML especial de caractere <+ ADw, que acaba sendo o primeiro caractere do UTF-7 codificado documento XML. Como este não é compatível com o padrão XML, MSXML se recusa a carregar esses arquivos. Muitos editores de texto e processadores de texto permitem que você salve os arquivos de texto Unicode, conhecidos como a codificação de texto no Microsoft Word, em várias codificações de transferência diferentes, incluindo UTF-7. Portanto, se você salvar um documento do Word como "texto codificado UTF-7", o MSXML recusará a carregá-lo por motivos acima.
Etapas para reproduzir o comportamento
-
Crie um arquivo XML simples no Word 2000:
<?xml version="1.0"?><MyTag><EmbeddedTag name1="value"/></MyTag>
-
Salve o arquivo como texto codificado em. Quando o Word perguntar se você deseja perder a formatação, clique em Sim. O Word solicitará que você para um formato de codificação a ser usado. Selecione UTF-7e, em seguida, salve o documento como nome de arquivo TestUTF7.xml do cap.
-
Nome do arquivo cap carga TestUTF7.xml no Internet Explorer 5. Você receberá a seguinte mensagem de erro:
Inválido no nível superior do documento. Linha 1, posição 1 + ADw-? xml versão + AD0AIg - 1.0 + ACI-? + AD4-.
Referências
Para o mais recente Microsoft Global Software Development http://www.unicode.org/ para o padrão Unicode mais recente.Para obter mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite os seguintes sites da Microsoft:
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep(c) Microsoft Corporation 2000, todos os direitos reservados. Contribuições Jay Andrew Allen, da Microsoft Corporation.