HRESULT C00CE56E message d’erreur « Le système ne prend pas en charge l’encodage spécifié » avec MSXML

Cet article vous aide à résoudre le problème lié au fait que HRESULT C00CE56E System Does Not Support the Specified Encoding message d’erreur avec MSXML.

Version d’origine du produit : Microsoft XML
Numéro de la base de connaissances d’origine : 304625

Symptômes

Lorsque vous chargez un document XML distant à partir d’un serveur Web à l’aide de XMLHTTP ou XMLDocument ::Load, vous pouvez recevoir le message d’erreur suivant :

HRESULT C00CE56E
Le système ne prend pas en charge l’encodage spécifié.

Cette erreur est la plus fréquente lorsque vous utilisez une infrastructure d’application de niveau intermédiaire Java.

Cause

À compter de la version 2.6, MSXML transmet tous les documents XML via Mlang.dll pour vérifier leur encodage. Si Mlang.dll rencontre une chaîne d’encodage non standard, elle retourne une erreur.

'ISO8859_1' est la représentation canonique de la chaîne d’encodage de caractères Latin-1 dans les bibliothèques de classes et de langage Java. Toutefois, la norme définie par l’Autorité des numéros attribués par Internet est « ISO-8859-1 », qui n’est pas un alias accepté.

Résolution

Pour résoudre ce problème, effectuez lʼune des opérations suivantes :

  • Remplacez la chaîne d’encodage de caractères dans l’environnement serveur Java approprié de « ISO8859_1 » par « ISO-8859-1 ».

  • Utilisez IXMLDOMDocument::get_responseBody pour récupérer les données en tant que mémoire tampon brute d’octets. Si vous développez l’application dans Microsoft Visual C++, vous pouvez définir un handle HGLOBAL pour vos données et l’utiliser CreateStreamOnHGlobal pour faciliter le traitement des données.

References

Pour plus d’informations, consultez Jeux de caractères.