|
|
Os caráteres do original de XML podem ser codificados em formatos diferentes. Pelo defeito XML usa o caráter de Unicode (UTF-8 ou UTF-16) - ajustar, mas outros encodings podem ser usados se forem declarados na declaração de XML no começo do original.
|
Devido ao problema codificando você pode começar erros diferentes, quando você tenta carregar um original de XML no Internet Explorer:
|
“Comutar do encoding atual ao encoding especificado não suportado.”
|
Tal tipo de erro gera devido à inconsistência entre o encoding do caráter especificado na declaração de XML e o encoding real do caráter usado colocar em série o original de XML. Em XML todos os caráteres vêm do caráter universal - ajustar (UCS), que assocía sempre um ponto de código numérico com cada caráter. Muitos algoritmos existem para pontos de código convertendo-se em uma seqüência dos bytes. Um encoding específico do caráter deve ser usado colocar em série um original de XML. Por exemplo, se você datilografar um original de XML no notepad e excepto ele, você pode escolher de um de diversos encodings suportados do caráter including ISO-8859-1, UTF-8, ou UTF-16. De acordo com a especificação de XML 1.0, todos os processadores são requeridos detectar e suportar automaticamente os encodings UTF-8 e UTF-16. Você não necessita uma declaração de XML se você usar um destes dois encodings ao colocar em série seus originais,
|
<?xml version="1.0" encoding="UTF-8"?> <!-- optional -->
|
Se você usar o encoding diferente à excepção de UTF-8/UTF-16, então você deve usar uma declaração de XML especificar o encoding real usado. Sem saber o que o encoding foi usado realmente como poder o processador leu a informação codificando?
É fácil para processadores auto-detect entre UTF-8/UTF-16 com ou sem uma declaração de XML procurando uma marca da ordem do byte (BOM) requerida nos originais UTF-16. Para todos encodings restantes, você sabe que os primeiros cinco caráteres devem ser “<? xml”. Desde que um processador dado suportará somente um jogo finito dos encodings, um algoritmo do brute-force pode ser usado que olhe simplesmente o primeiro poucos bytes para determinar a família do encoding do caráter usado (há cinco famílias codificando possíveis including UTF-16 endian grande, UTF-16 pouco endian, UCS-4 ou o outro encoding de 32 bocados, EBCDIC, e tudo mais). Uma vez que o processador detecta a família codificando, pode ler o descanso da declaração de XML (desde que somente um jogo restrito dos caráteres pode ser usado na declaração de XML), então ele pode comutar a usar o encoding especificado do caráter dentro da família detectada. Se, neste momento, a declaração de XML disser o processador para comutar a um encoding de uma família completamente diferente, esse erro ocorre. Assim quando você conserva um original usando um encoding específico, a seguir indicar um encoding diferente na declaração de XML, você começará este erro porque os encodings devem concordar.
|
Um caráter inválido foi encontrado no índice do texto.
|
Esta mensagem de erro gera quando um caráter no original de XML não combina o atributo do encoding e nenhum todo o atributo do encoding foi especificado. Normalmente você começará esta mensagem de erro se seu original de XML contiver caráteres “extrangeiros” e a lima estiver conservada com um editor codificando de único-byte como o notepad.
|
Notepad do Windows 2000 sem codificar
|
As limas do Notepad do Windows 2000 podem conservar como o formato de Unicode.
|
Excepto a lima de XML abaixo como Unicode (país que o original não contem nenhum atributo do encoding):
|
<?xml version="1.0"?>
<Country>
<from>India</from>
<to>China</to>
</Country>
|
A lima acima não gerará um erro em IE 5+, Firefox, ou ópera, mas gerará um erro em Netscape 6.2.
|
Notepad do Windows 2000 com codificar
|
As limas do notepad do Windows 2000 conservadas como Unicode usam o formato “UTF-16” codificando.
Se você adicionar um atributo do encoding às limas de XML conservadas como Unicode, as janelas que codificam valores gerarão um erro.
|
O seguinte encoding não gera a mensagem de erro:
|
<?xml version="1.0" encoding="windows-1252" ?>
<!-- Edited with XML Spy v2006 (http://www.altova.com)
-->
-<Country>
<to>China</to>
<from>India</from>
<heading>remind language</heading>
<body>Norwegian: æøå. French: êèé</body>
</Country>
|
O seguinte encoding não gera a mensagem de erro:
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- Edited with XML Spy v2006 (http://www.altova.com)
-->
-<Country>
<to>China</to>
<from>India</from>
<heading>remind language</heading>
<body>Norwegian: æøå. French: êèé</body>
</Country>
|
O seguinte encoding não gera a mensagem de erro:
|
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Edited with XML Spy v2006 (http://www.altova.com)
-->
-<Country>
<to>China</to>
<from>India</from>
<heading>remind language</heading>
<body>Norwegian: æøå. French: êèé</body>
</Country>
|
> o seguinte encoding não gerará um erro em IE 5+, Firefox, ou ópera, mas em Netscape 6.2 gerará um erro.
|
<?xml version="1.0" encoding="UTF-16" ?>
<!-- Edited with XML Spy v2006 (http://www.altova.com)
-->
-<Country>
<to>China</to>
<from>India</from>
<heading>remind language</heading>
<body>Norwegian: æøå. French: êèé</body>
</Country>
|
Keywords:
xml document, xml parser, xml schema, xml declaration,
xml-encoding,
xsl encoding,
xml encoding,
xml encode,
xml unicode encoding,
xslt encoding,
xml charset,
xml base64,
xml encoding declaration,
xml encoding utf 8,
xml encoding iso 8859 1,
java xml encoding,
xml iso 8859 1,
xml character encoding,
xml iso 8859,
xml encoding iso 8859,
xml encoding utf,
xml encoding iso,
xml encoded,
xml version 1.0 encoding utf 8,
xml version 1.0 encoding,
xml version 1.0 encoding iso 8859 1,
javax xml rpc encoding,
xml version 1.0 encoding utf 16.
|