В VBS-ке xерез XmlHttp дёргаю данные с сайтов. Получив ResponseBody конвертирую его текст через ADODB.Stream, а потом загоняю в HTMLDocument
Проблема в том, что на Yandex-е, Rambler-e кодировка Windows-1251, а на гугле UTF-8 и вместо нормального текста я получаю крякозяблы.
В голову не приходит как доделать код, чтоб добиться нормального текста. Если в Stream подсовываю UTF-8 то для гугла всё нормально пашет, а для Yandex-a естессено всё портится. Посоветуйте как быть плз.
- Код: Выделить всё
Dim UrlDownloader
Set UrlDownloader = New UrlDownloaderClass
if UrlDownloader.UrlToDocument("http://www.ya.ru",Document) Then
MsgBox Document.body.outertext
Else
MsgBox Err.Description,vbExclamation
End if
if UrlDownloader.UrlToDocument("http://www.google.ru",Document) Then
MsgBox Document.body.innertext
Else
MsgBox Err.Description,vbExclamation
End if
Class UrlDownloaderClass
Private XmlHttp
Public Status
Private Sub Class_Initialize
Set XmlHttp = CreateObject("Msxml2.XMLHTTP")
End Sub
Function UrlToDocument(URL,HTMLDocument)
On Error Resume Next
XmlHttp.abort
XmlHttp.Open "GET",Url,False
XmlHttp.Send
Status = XmlHttp.Status
If XmlHttp.Status = 200 Then
Set Stream = CreateObject("ADODB.Stream")
Stream.Charset = "Windows-1251"
Stream.Type = 1
Stream.Open
Stream.Write XmlHttp.ResponseBody
Stream.Position = 0
Stream.Type = 2
Set HTMLDocument = CreateObject("HTMLFile")
HTMLDocument.Open
HTMLDocument.write "<HTML><BODY></BODY></HTML>"
HTMLDocument.body.innerhtml = Stream.ReadText
HTMLDocument.Close
End if
UrlToDocument = Not Cbool(Err.Number)
End Function
Private Sub Class_Terminate
Set XmlHttp = Nothing
Set XmlDom = Nothing
End Sub
End Class