Страницы: 1
RSS
Загрузка текста web страницы в правильной кодировке
 
Здравствуйте форумчане. У меня такая проблема:
Пытаюсь загрузить текст с web страницы, и если сайт в кодировке UTF-8, то все загружается правильно, но если сайт в кодировке Windows-1251, то все русские символы загружаются абракадаброй.

На просторах инета нашел 2 разных кода загружающих текст с инета, но оба неправильно загружают кодировку Windows-1251.
Может кто сможет что-то подправить в коде? Буду очень благодарен.
 
вот так будет работать:
Код
Sub test2439048203948()
    URL$ = "http://www.livemaster.ru/topic/764327-rospis-svetlyh-tkanej-kraskami-futbolka-s-letnim-motivom"
    MsgBox GetHTTPResponse(URL$)
End Sub

Function GetHTTPResponse(ByVal sURL As String) As String
    On Error Resume Next
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    With oXMLHTTP
        .Open "GET", sURL, False
        .Send

        With CreateObject("ADODB.Stream")
            filename$ = Environ("tmp") & "\response.txt"
            .Charset = "windows-1251": .Type = 1        ' adTypeBinary:
            .Open: .Write oXMLHTTP.ResponseBody
            .SaveToFile filename$, 2
            .Type = 2        'adTypeText
            .LoadFromFile filename$
            response$ = .ReadText
            .Close
        End With

        GetHTTPResponse = response$
    End With
    Set oXMLHTTP = Nothing
End Function 

См. последний вариант функции в статье:
http://excelvba.ru/code/GetHTTPResponse
(аналог вышеприведенной функции, только с возможностью передать кодировку в функцию в качестве параметра)
Изменено: Игорь - 28.05.2014 20:58:53
 
Игорь, большое спасибо за подсказку. Но вот бы еще код сам угадывал кодировку скачиваемой страницы, без явного указания ее (кодировки).
 
можно скачать страницу, найти в её содержимом кодировку (она всегда видна, т.к. написана латиницей, - независимо от того, правильно ли распозналась кодировка),
и потом заново скачать страницу в нужной кодировке

такая проблема возникает, когда на странице указана одна кодировка, а веб-сервер выдает страницу в другой
не так много сайтов, где такая проблема проявляется
вы же не универсальный парсер пишете, - а для 1-2 сайтов, можно и вручную прописать кодировку
 
Игорь, в принципе согласен, хоть сайтов и будет около 30, но и для 30 можно ручками прописать. Еще раз спасибо за помощь.
Страницы: 1
Читают тему
Наверх