Récupérer des caractères spéciaux comme € à partir d'un HttpWebRequest
5 réponses
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.
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
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
Dans son message uajLpPIWFHA.2684@TK2MSFTNGP09.phx.gbl
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 ?
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
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 ?
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 uajLpPIWFHA.2684@TK2MSFTNGP09.phx.gbl
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 ?
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 ?
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
Dans son message eTpFUbhWFHA.3220@TK2MSFTNGP10.phx.gbl
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.
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
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
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 eTpFUbhWFHA.3220@TK2MSFTNGP10.phx.gbl
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.
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.