Numéro d'article: 275883 - Dernière mise à jour: vendredi 26 octobre 2007 - Version: 1.5

Information : Codage et méthodes d'interface DOM

A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.
Agrandir tout | Réduire tout

Résumé

Un des avantages principaux de données XML (Extensible Markup Language) est qu'il est indépendant de la plate-forme. Toutefois, le codage correct doit être spécifié afin d'assurer le transfert correct des données XML des plates-formes différentes. Le livre blanc «How à codage XML Data» corrige des problèmes de codage de XML générales dans Détail :
http://msdn.microsoft.com/en-us/library/aa468560.aspx (http://msdn.microsoft.com/en-us/library/aa468560.aspx)
Dans la plupart des cas, les erreurs de codage XML issus de la valeur par défaut différent paramètres des méthodes d'analyseur (MSXML) de Microsoft XML et des interfaces de codage. Une compréhension claire de ces paramètres par défaut vous aidera à éviter les erreurs de codage.

Plus d'informations

Encodages XML

MSXML prend en charge tous les codages pris en charge par Microsoft Internet Explorer. Prise en charge d'Internet Explorer dépend les packs de langue sont installés sur l'ordinateur ; ces informations sont stockées sous la clé de Registre suivante :
HKEY_CLASSES_ROOT\MIME\Database\Charset
MSXML assure une prise en charge native pour les codages suivants :
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
Il reconnaît également (en interne en utilisant la fonction de API WideCharToMultibyte pour les mappages) les codages suivants :
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
FENÊTRES 1253
FENÊTRES 1254
WINDOWS-1255
WINDOWS-1256
FENÊTRES 1257
WINDOWS-1258
L'emplacement approprié pour spécifier le codage des données est la déclaration XML. Si par exemple, si les données sont codées avec la norme ISO-8859-1, vous pouvez le spécifier comme suit :
<?xml version="1.0" encoding="ISO-8859-1"?>
				
sans ces informations, le codage par défaut est UTF-8 ou UTF-16, selon la présence d'une marque d'ordre d'octet UNICODE (BOM) au début du fichier XML. Si le fichier commence par une marque d'ordre d'octet UNICODE (0xFF 0xFE) ou (0xFF 0xFE), le document est considéré en codage UTF-16 ; sinon, il est au format UTF-8. La méthode Save de l'interface IXMLDOMDocument gère le codage d'origine du document. La valeur par défaut pour cette méthode est UTF-8.

Erreurs de DOM MSXML

Deux erreurs courantes renvoyées par les méthodes d'interface DOM (Document Object Model) XML sont :
Un caractère non valide a été trouvé dans le contenu de texte.
- et -
Commutateur du codage actuel au codage spécifié non pris en charge.
Avec la méthode de chargement de l'interface IXMLDOMDocument, ces erreurs se produisent généralement dans les conditions suivantes :
  • Aucun codage n'est spécifié, aucune marque d'ordre d'octet ne se trouvent au début du fichier XML, et les données contient des caractères spéciaux encoded in UTF-16 format (such as Swedish character å, or 0xE5) rather than the default UTF-8 (0xC3 0xA5) format.
  • Le codage spécifié ne correspond pas au codage réel des données XML.
Une bonne pratique consiste à toujours spécifier le codage correct dans la déclaration XML, plutôt que d'accepter le codage par défaut.

Avec l'analyseur MSXML versions 2.5, SP1 2.5 et 2.6, la méthode loadXML de IXMLDOMDocument peuvent uniquement charger UTF-16 ou données codés UCS-2. Toute tentative de charger les données XML qui sont codées avec un autre codage résultats de format dans le message d'erreur suivant :
Commutateur du codage actuel au codage spécifié non pris en charge.
Avec la version de MSXML 3.0 (MSXML3.dll), cette restriction est supprimée et le code suivant s'exécute sans erreur :
hr = pXMLDoc->loadXML("<?xml version=\"1.0\" encoding=\"UTF-8\"?><tag1>Abcdef</tag1>");
				
Remarque : la propriété xml de l'interface IXMLDOMDocument écrit les données XML en tant que UTF-16 codés mais sans la marque d'ordre d'octet au début. Cela peut entraîner des problèmes de codage.

Vous pouvez également recevoir ces erreurs lorsque vous appelez la méthode transformNode de l'interface IXMLDOMNode avec un fichier XSL ou XSLT dans lequel le codage d'informations XML est spécifié comme suit :
<xsl:output method="xml" encoding="UTF-8" />
				
la méthode transformNode retourne un BSTR qui par définition de données codée UTF-16. Un meilleur moyen de conserver le codage consiste à appeler la méthode transformNodeToObject et stocker les résultats dans un flux ou vers un nouveau document XML et puis enregistrez-le.

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
259555  (http://support.microsoft.com/kb/259555/EN-US/ ) PRB : Une erreur se produit lorsque vous ouvrez un jeu d'enregistrements ADO sur le flux XML
Pour obtenir le dernier téléchargement XML et les informations, consultez le site Web Microsoft MSDN (Microsoft Developer Network) suivant :
http://msdn.microsoft.com/xml/default.asp (http://msdn.microsoft.com/xml/default.asp)

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft XML Parser 2.5
  • Microsoft XML Parser 2.6
  • Microsoft XML Parser 3.0
  • Microsoft XML Core Services 4.0
Mots-clés : 
kbmt kbproductlink kbfaq kbinfo KB275883 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 275883  (http://support.microsoft.com/kb/275883/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.