Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

récupération d'une page html avecle bon encodage

1 réponse
Avatar
wmn
bonsoir,

j'ai un pb, je récupère mes pages web avec le bout de code suivant,


HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://...");

HttpWebResponse res = (HttpWebResponse)req.GetResponse();
string html = new StreamReader(res.GetResponseStream(),
Encoding.GetEncoding(res.CharacterSet), false).ReadToEnd();


le pb c que le charset des headers n'est pas toujours celui déclaré dans
le html,

comment je peux m'en sortir ?


wmn.

1 réponse

Avatar
Simon Mourier [SoftFluent]
L'encodage des pages HTML, c'est toujours une histoire compliquée en WEB.
L'encoding d'une page HTML envoyé par un flux HTTP se détermine de
plusieurs manières

1) le contenu de la page peut l'indiquer dans une balise méta du genrce:
<META http-equiv="Content-Type" content="text/html; charset=utf-8" >
2) théoriquement, le contenu du méta HTML ci dessus doit se trouver aussi
dans le stream HTTP, dans le header Content-Type
3) on peut aussi le trouver avec header HTTP Content-Encoding
4) enfin, on peut se baser sur le byte order mark (ou BOM), qui peut (ou
pas) se trouver au tout début du fichier (cf doc/google sur le sujet)

bref, c'est compliqué. Le plus sûr étant 1). Si 1) n'existe pas, on utilise
les headers HTTP. Si les headers HTTP n'existent pas, on peut supposer que
le texte est en UTF8.

Simon.
www.softfluent.com


"wmn" a écrit dans le message de news:
455df988$0$21144$
bonsoir,

j'ai un pb, je récupère mes pages web avec le bout de code suivant,


HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://...");

HttpWebResponse res = (HttpWebResponse)req.GetResponse();
string html = new StreamReader(res.GetResponseStream(),
Encoding.GetEncoding(res.CharacterSet), false).ReadToEnd();


le pb c que le charset des headers n'est pas toujours celui déclaré dans
le html,

comment je peux m'en sortir ?


wmn.