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 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 | Reduzir tudo

Sumário

Uma vantagem principal de dados XML (Extensible Markup Language) é que é independente da plataforma. No entanto, a codificação correcta tem de especificar para garantir a transferência correcta de dados XML entre plataformas diferentes. A documentação técnica "Como a codificação de dados XML" resolve problemas de codificação XML gerais detalhadamente:
http://msdn.microsoft.com/en-us/library/aa468560.aspx (http://msdn.microsoft.com/en-us/library/aa468560.aspx)
Em maior parte dos cenários, erros de codificação XML provêm a codificação definições do Microsoft XML (MSXML) analisador métodos e interfaces predefinida diferente. Uma compreensão clara estas predefinições ajudará a evitar os erros de codificação.

Mais Informação

Codificação XML

MSXML suporta as codificações que são suportadas pelo Microsoft Internet Explorer. Suporte do Internet Explorer depende que pacotes de idiomas são instalados no computador; esta informação é armazenada na seguinte chave de registo:
HKEY_CLASSES_ROOT\MIME\Database\Charset
MSXML tem suporte nativo para as codificações seguintes:
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
Também reconhece (internamente utilizando a função de API WideCharToMultibyte para mapeamentos) as codificações seguintes:
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
1254 JANELAS
WINDOWS-1255
WINDOWS 1256
WINDOWS-1257
WINDOWS-1258
O local certo para especificar a codificação para os dados são a declaração XML. Por exemplo, se os dados são codificados com padrão ISO-8859-1, pode especificar este da seguinte forma:
<?xml version="1.0" encoding="ISO-8859-1"?>
				
sem estas informações, a codificação predefinida é UTF-8 ou UTF-16, consoante a presença de uma marca de ordem de bytes UNICODE (BOM) no início do ficheiro XML. Se o ficheiro é iniciado com uma marca de ordem de bytes UNICODE (0xFF 0xFE) ou (0xFE 0xFF), o documento é considerado em codificação UTF-16; caso contrário, é em UTF-8. O método Guardar da interface IXMLDOMDocument mantém a codificação original do documento. A predefinição para este método é UTF-8.

MSXML DOM erros

Dois erros comuns que são devolvidos a partir dos métodos de interface de modelo de objecto de documento (DOM) XML são:
Foi encontrado um carácter inválido no conteúdo de texto.
- e -
Parâmetro da codificação actual para a codificação especificada não suportado.
Com o método da interface IXMLDOMDocument carregar , estes erros ocorrem geralmente nas seguintes condições:
  • Codificação não for especificada nenhuma marca de ordem de bytes encontra-se no início do ficheiro 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 boa prática é sempre especificar a codificação correcta dentro a declaração XML, em vez de aceitar a codificação predefinida.

Com o analisador MSXML versões 2.5 e 2.6, o método loadXML 2.5 SP1 do IXMLDOMDocument podem apenas carregar UTF-16 ou dados codificados UCS-2. Qualquer tentativa de carregar dados XML codificados com formato outra codificação resulta no seguinte erro:
Parâmetro da codificação actual para a codificação especificada não suportado.
Com a edição do MSXML 3.0 (MSXML3.dll), esta restrição é removida e o código seguinte é executado sem erros:
hr = pXMLDoc->loadXML("<?xml version=\"1.0\" encoding=\"UTF-8\"?><tag1>Abcdef</tag1>");
				
Nota : A propriedade de xml da interface IXMLDOMDocument escreve os dados XML como UTF-16 codificado, mas sem a marca de ordem de bytes no início. Isto pode conduzir a problemas de codificação.

Poderá também receber estes erros quando chamar o método de transformNode da interface de IXMLDOMNode com um ficheiro XSL ou XSLT em que o XML codificação de informações é especificado da seguinte forma:
<xsl:output method="xml" encoding="UTF-8" />
				
o método transformNode devolve um BSTR que dados codificados UTF-16 por definição. A melhor forma para manter a codificação é chamar o método transformNodeToObject e armazenar os resultados para uma transmissão em sequência ou para um novo documento XML e, em seguida, guardá-lo.

Referências

Para obter informações adicionais, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
259555  (http://support.microsoft.com/kb/259555/EN-US/ ) PROBLEMA: Erro ocorre quando abre um conjunto de registos ADO na sequência XML
Para a transferência XML mais recente e informações, consulte o seguinte Web site da MSDN (Microsoft Developer Network):
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )