OVH Cloud OVH Cloud

Récupérer des caractères spéciaux comme € à partir d'un HttpWebRequest

5 réponses
Avatar
Bull
Bonsoir,

Je récupère le contenu d'une page web à l'aider d'un HttpWebRequest et
d'un HttpWebResponse.

Mon problème est que si la page en question contient des caractères
"exotiques" du type "€", ceux-ci ne sont pas récupérés et sont remplacés
par des carrés.

Comment faire pour les récupérer ?

Merci d'avance,

--
Cordialement,
Bull

5 réponses

Avatar
Bull
Bonjour,

J'apporte quelques précisions à ma question :

Je récupère le contenu d'une page web qui n'est autre qu'un fichier xml,
à l'aide HttpWebRequest et d'un HttpWebResponse.

Puis, je parcours le contenu du XML à l'aide d'un XmlTextReader.

Or ce XmlTextReader ne récupère pas les caractères comme "€". Y a-t-il
moyen de forcer l'encoding d'un XmlTextReader ?

Comme sinon résoudre mon problème ?

Merci d'avance,

--
Cordialement,
Bull
Avatar
Fred
Dans son message
Bull nous dit :

Bonjour,

J'apporte quelques précisions à ma question :

Je récupère le contenu d'une page web qui n'est autre qu'un fichier
xml, à l'aide HttpWebRequest et d'un HttpWebResponse.

Puis, je parcours le contenu du XML à l'aide d'un XmlTextReader.

Or ce XmlTextReader ne récupère pas les caractères comme "€". Y a-t-il
moyen de forcer l'encoding d'un XmlTextReader ?

Comme sinon résoudre mon problème ?

Merci d'avance,



Bonjour,
Est-ce que le fichier xml spécifie bien son encodage ?
Classiquement : <?xml version="1.0" encoding="UTF-8"?>
Vérifie le ContentEncoding du HttpWebResponse pour voir s'il correspond.
En l'absence de spécification d'encodage, le XmlTextReader décode en UTF-8.
De quelle manière vois-tu que les caractères tels que € ne sont pas
récupérés ?

Sinon tu peux peut-être passer par un StreamReader pour transformer le
stream d'octets retourné par HttpWebResponse.GetResponseStream en
caractères, dans l'encodage que tu souhaites, avant d'initialiser le
XmlTextReader avec ce StreamReader ?

Peut-être un bout de code permettrait d'y voir plus clair ?

--
Fred
Avatar
Bull
Bonjour Fred et merci pour réponse,

En mettant encoding="UTF-8", le caractère € passe parfaitement. Par
contre, en mettant à ISO-8859-1, ça ne passe plus. Est-ce normal ?
Pourtant sous Firefox, le symbole € passe aussi bien en encoding="UTF-8"
que encoding="ISO-8859-1"

Merci d'avance,
--
Cordialement,
Bull


Fred a écrit :
Dans son message
Bull nous dit :


Bonjour,

J'apporte quelques précisions à ma question :

Je récupère le contenu d'une page web qui n'est autre qu'un fichier
xml, à l'aide HttpWebRequest et d'un HttpWebResponse.

Puis, je parcours le contenu du XML à l'aide d'un XmlTextReader.

Or ce XmlTextReader ne récupère pas les caractères comme "€". Y a-t-il
moyen de forcer l'encoding d'un XmlTextReader ?

Comme sinon résoudre mon problème ?

Merci d'avance,




Bonjour,
Est-ce que le fichier xml spécifie bien son encodage ?
Classiquement : <?xml version="1.0" encoding="UTF-8"?>
Vérifie le ContentEncoding du HttpWebResponse pour voir s'il correspond.
En l'absence de spécification d'encodage, le XmlTextReader décode en UTF-8.
De quelle manière vois-tu que les caractères tels que € ne sont pas
récupérés ?

Sinon tu peux peut-être passer par un StreamReader pour transformer le
stream d'octets retourné par HttpWebResponse.GetResponseStream en
caractères, dans l'encodage que tu souhaites, avant d'initialiser le
XmlTextReader avec ce StreamReader ?

Peut-être un bout de code permettrait d'y voir plus clair ?



Avatar
Fred
Dans son message
Bull nous dit :

Bonjour Fred et merci pour réponse,

En mettant encoding="UTF-8", le caractère € passe parfaitement. Par
contre, en mettant à ISO-8859-1, ça ne passe plus. Est-ce normal ?
Pourtant sous Firefox, le symbole € passe aussi bien en
encoding="UTF-8" que encoding="ISO-8859-1"



Bonjour,

Si mes sources sont bonnes (tu pourras vérifier en tapant ISO-8859-1 et
ISO-8859-15 sur Google), le jeu de caractères ISO-8859-1 (ISO Latin 1) ne
définit pas le symbole Euro, ni d'ailleurs aucun caractères dans la plage
128-159. Pour ces codes, le résultat peut-être différent selon les
navigateurs.
Par contre ISO_8859-15 (ISO Latin 9) le définit.
Pour ma part je préfère l'UTF-8 pour l'XML, sachant que c'est la norme par
défaut.



--
Fred
Avatar
Bull
Ok merci beaucoup Fred. Donc en fait, mon application marche
parfaitement, c'est le webmaster du fichier xml qui a mal choisi son
encodage :)

Fred a écrit :
Dans son message
Bull nous dit :


Bonjour Fred et merci pour réponse,

En mettant encoding="UTF-8", le caractère € passe parfaitement. Par
contre, en mettant à ISO-8859-1, ça ne passe plus. Est-ce normal ?
Pourtant sous Firefox, le symbole € passe aussi bien en
encoding="UTF-8" que encoding="ISO-8859-1"




Bonjour,

Si mes sources sont bonnes (tu pourras vérifier en tapant ISO-8859-1 et
ISO-8859-15 sur Google), le jeu de caractères ISO-8859-1 (ISO Latin 1) ne
définit pas le symbole Euro, ni d'ailleurs aucun caractères dans la plage
128-159. Pour ces codes, le résultat peut-être différent selon les
navigateurs.
Par contre ISO_8859-15 (ISO Latin 9) le définit.
Pour ma part je préfère l'UTF-8 pour l'XML, sachant que c'est la norme par
défaut.







--
Cordialement,
Bull