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

Code Source HTML

1 réponse
Avatar
Pyroa
Bonjour,

J'ai besoin de récuperer le code source de certaines pages HTML.

Pour ceci j'utilise le code suivant :

Dim req As WebRequest = WebRequest.Create(Url)
result = req.GetResponse
Dim ReceiveStream As Stream
ReceiveStream = result.GetResponseStream
Dim encode As Encoding = System.Text.Encoding.GetEncoding("UTF-8")
Dim sr As StreamReader = New StreamReader(ReceiveStream, encode)
contenu = sr.ReadToEnd


Tout fonctionne bien à un détail près .... tous les accents sont supprimés !

savez vous pourquoi ?

merci d'avance pour vos réponses.

1 réponse

Avatar
Simon Mourier [SoftFluent]
L'encoding n'est pas toujours UTF8.

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" >

c'est le moyen le plus sûr de déterminer l'encoding, mais ceci implique de
parser la page.

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) vous pouvez aussi essayer le 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 théoriquement très compliqué :-) En pratique, les headers HTTP
sont assez fiables et se retrouvent en tant que propriétés au niveau de
l'objet HttpWebRequest (vous devez caster votre WebRequest)

Simon.
www.softfluent.com

PS: le ReadToEnd n'est pas bon, il faut lire des morceaux (par le Read
byte[]) jusqu'à ce que le stream ne retourne plus rien (le résultat du Read
est 0). Le ReadToEnd peut avoir l'air de fonctionner parfois, quand la
connexion est très rapide.

"Pyroa" a écrit dans le message de news:

Bonjour,

J'ai besoin de récuperer le code source de certaines pages HTML.

Pour ceci j'utilise le code suivant :

Dim req As WebRequest = WebRequest.Create(Url)
result = req.GetResponse
Dim ReceiveStream As Stream
ReceiveStream = result.GetResponseStream
Dim encode As Encoding = System.Text.Encoding.GetEncoding("UTF-8")
Dim sr As StreamReader = New StreamReader(ReceiveStream, encode)
contenu = sr.ReadToEnd


Tout fonctionne bien à un détail près .... tous les accents sont supprimés
!

savez vous pourquoi ?

merci d'avance pour vos réponses.