ID do artigo: 275883 - Última revisão: sexta-feira, 26 de outubro de 2007 - Revisão: 1.5

INFO: Codificação de XML e métodos de interface do DOM

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Recolher tudo

Sumário

Uma vantagem principal dos dados XML (Extensible Markup Language) é que ele é independente de plataforma. No entanto, codificação correta deve ser especificado para garantir a correta transferência de dados XML entre diferentes plataformas. O white paper "Como a codificação de dados XML" aborda problemas de codificação de XML gerais em detalhes:
http://msdn.microsoft.com/en-us/library/aa468560.aspx (http://msdn.microsoft.com/en-us/library/aa468560.aspx)
Na maioria dos cenários, erros de codificação XML se originam do padrão diferente configurações do Microsoft XML (MSXML) analisador métodos e interfaces de codificação. Uma compreensão clara dessas configurações padrão ajudará impedindo que os erros de codificação.

Mais Informações

Codificações XML

MSXML oferece suporte a todas as codificações são suportadas pelo Microsoft Internet Explorer. Suporte do Internet Explorer depende de quais pacotes de idiomas são instalados no computador; essas informações são armazenadas sob a seguinte chave do Registro:
HKEY_CLASSES_ROOT\MIME\Database\Charset
MSXML tem suporte nativo para as seguintes codificações:
UTF-8
UTF-16
UCS-2
UCS-4
ISO-10646-UCS-2
UNICODE-1-1-UTF-8
UNICODE-2-0-UTF-16
UNICODE-2-0-UTF-8
Ele também reconhece (internamente usando a função de API WideCharToMultibyte para mapeamentos) as seguintes codificações:
US-ASCII
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
WINDOWS-1250
WINDOWS-1251
WINDOWS-1252
WINDOWS-1253
WINDOWS-1254
WINDOWS-1255
WINDOWS-1256
WINDOWS-1257
WINDOWS-1258
O local correto para especificar a codificação para os dados é a declaração XML. Por exemplo, se os dados são codificados com padrão ISO-8859-1, você pode especificar isso da seguinte maneira:
<?xml version="1.0" encoding="ISO-8859-1"?>
				
sem essas informações, a codificação padrão é UTF-8 ou UTF-16, dependendo da presença de uma marca de ordem de byte UNICODE (BOM) no início do arquivo XML. Se o arquivo inicia com uma marca de ordem de byte UNICODE (0xFF 0xFE) ou (0xFE 0xFF), o documento é considerado em codificação UTF-16; caso contrário, ele está no UTF-8. O método Save da interface do IXMLDOMDocument mantém a codificação original do documento. O padrão para este método é UTF-8.

Erros de DOM do MSXML

Dois erros comuns que são retornados de métodos de interface XML Document Object Model (DOM) são:
Um caractere inválido foi encontrado no conteúdo de texto.
- e -
Opção da codificação atual para a codificação especificada não suportado.
Com o método da interface do IXMLDOMDocument carregar , esses erros geralmente ocorrem sob as seguintes condições:
  • Codificação não for especificado, nenhuma marca de ordem de byte é encontrada no início do arquivo XML e os dados contêm caracteres especiais encoded in UTF-16 format (such as Swedish character å, or 0xE5) rather than the default UTF-8 (0xC3 0xA5) format.
  • A codificação especificada não coincide com a codificação real dos dados XML.
Uma prática recomendada é sempre especificar a codificação correta dentro da declaração XML, em vez de aceitar a codificação padrão.

Com o analisador MSXML versões 2.5, SP1 2.5 e 2.6, o método loadXML do IXMLDOMDocument somente podem carregar dados do UCS-2 codificado ou UTF-16. Qualquer tentativa de carregar dados XML que estão codificados com outra codificação formatar os resultados no seguinte erro:
Opção da codificação atual para a codificação especificada não suportado.
Com o lançamento do MSXML 3.0 (Msxml3.dll), essa restrição é removida e o código a seguir for executada sem erros:
hr = pXMLDoc->loadXML("<?xml version=\"1.0\" encoding=\"UTF-8\"?><tag1>Abcdef</tag1>");
				
Observação : A propriedade xml da interface do IXMLDOMDocument escreve os dados XML como UTF-16 codificado, mas sem a marca de ordem de byte no início. Isso pode levar a problemas de codificação.

Você também pode receber esses erros quando você chama o método transformNode da interface IXMLDOMNode com um arquivo XSL ou XSLT em que o XML de codificação de informações é especificado da seguinte maneira:
<xsl:output method="xml" encoding="UTF-8" />
				
o método transformNode retorna um BSTR que é UTF-16 codificado dados por definição. Uma maneira melhor para manter a codificação é chamar o método transformNodeToObject e armazenar os resultados para um fluxo ou para um novo documento XML e em seguida, salve-o.

Referências

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
259555  (http://support.microsoft.com/kb/259555/EN-US/ ) PROBLEMA: Erro ocorre ao abrir um Recordset ADO no fluxo XML
Para o download XML mais recente e informações, consulte o seguinte site Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/xml/default.asp (http://msdn.microsoft.com/xml/default.asp)

A informação contida neste artigo aplica-se a:
  • Microsoft XML Parser 2.5
  • Microsoft XML Parser 2.6
  • Microsoft XML Parser 3.0
  • Microsoft XML Core Services 4.0
Palavras-chave: 
kbmt kbproductlink kbfaq kbinfo KB275883 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 275883  (http://support.microsoft.com/kb/275883/en-us/ )