CreateObject("Microsoft.XMLHTTP") et accents
Bonsoir,
Je souhaite accéder à une page html sur un serveur et j'utilise CreateObject("Microsoft.XMLHTTP").
Mon souci, c'est que je ne récupère pas les caractères spéciaux (é è à ...) mais un ? à la place.
J'ai parcouru ce forum et d'autres et essayé plein de trucs sans succès.
Je joins un fichier de test avec un debug.print qui donne le résultat de la lecture.
Sub GetHtmlPage()
Dim PageHTML 'variable pour l'object "Microsoft.XMLHTTP"( l'object XML)
Dim sUrl As String
sUrl = "http://www.cistes.net/liste2.php?tc=0&ic=38"
Set PageHTML = CreateObject("Microsoft.XMLHTTP") 'instancie l'object
PageHTML.Open "GET", sUrl 'ouvre l'url dans l'object
PageHTML.setRequestHeader "Content-Type", _
"application/x-www-form-urlencoded; charset=iso-8859-1"
PageHTML.Send
Do: DoEvents: Loop While PageHTML.ReadyState <> 4 'attendre que la page soit chargée
'' Debug.Print PageHTML.getAllResponseHeaders
'le code source est dans """"PageHTML.ResponseText""""
Debug.Print PageHTML.ResponseText
End Sub
Vers la fin du debug chercher la ligne (exemple parmi d'autres)
<td class="cell"><span >geracole : Juste une photo, je croix n? 92 . (Voironnais)</span></td>
où n° est remplacé par n?
<td class="cell"><span >chess : C?brit? (Agglom?tion grenobloise)</span></td>
à la place de Célébrité (Agglomération grenobloise)
Merci de votre aide.
bonsoir,
essaie d'appeler cette fonction pour décoder les caractères spéciaux.
'(...)
debug.print UTF8_Decode(PageHTML.ResponseText)
'(...)
Function UTF8_Decode(ByVal sStr As String)
Dim l As Long, sUTF8 As String, iChar As Integer, iChar2 As Integer
For l = 1 To Len(sStr)
iChar = Asc(Mid(sStr, l, 1))
If iChar > 127 Then
If Not iChar And 32 Then ' 2 chars
iChar2 = Asc(Mid(sStr, l + 1, 1))
sUTF8 = sUTF8 & ChrW$(((31 And iChar) * 64 + (63 And iChar2)))
l = l + 1
Else
Dim iChar3 As Integer
iChar2 = Asc(Mid(sStr, l + 1, 1))
iChar3 = Asc(Mid(sStr, l + 2, 1))
sUTF8 = sUTF8 & ChrW$(((iChar And 15) * 16 * 256) + ((iChar2 And 63) * 64) + (iChar3 And 63))
l = l + 2
End If
Else
sUTF8 = sUTF8 & Chr$(iChar)
End If
Next l
UTF8_Decode = sUTF8
End Function
Salut,
Non, j'y avais pensé.
A+