Вот источник функции я использую Получить HTML-код для дальнейшего обрабатывающ:VBA WinHttp нет отображения символов
Public Function DownloadTextFile(url As String) As String
Dim oHTTP As WinHttp.WinHttpRequest
Set oHTTP = New WinHttp.WinHttpRequest
oHTTP.Open Method:="GET", url:=url, async:=False
oHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
'oHTTP.setRequestHeader "Content-Type", "multipart/form-data; "
oHTTP.setRequestHeader "Content-Type", "text/html; charset=utf-8"
oHTTP.Option(WinHttpRequestOption_EnableRedirects) = True
oHTTP.send
Dim success As Boolean
success = oHTTP.waitForResponse()
If Not success Then
Debug.Print "DOWNLOAD FAILED!"
Exit Function
End If
Dim responseText As String
Debug.Print oHTTP.responseText
responseText = oHTTP.responseText
'Set fs = CreateObject("Scripting.FileSystemObject")
'Set a = fs.CreateTextFile("c:\testfile.txt", True, False)
'Set a = fs.CreateTextFile("c:\testfile.txt", True, True)
'a.WriteLine oHTTP.responseText
'a.Close
Set oHTTP = Nothing
DownloadTextFile = responseText
End Function
Это работает для большинства страниц, но для некоторых страниц responseText
является No Mapping for the Unicode character exists in the target multi-byte code page
.
Вот пример веб-страницы, для которых responseText
является No Mapping for the Unicode character exists in the target multi-byte code page
и вот подозрительный характер, который не может быть закодированы (скриншот из Google Chrome):
http://imageshack.us/photo/my-images/585/errsource.png/
Время от времени на том же сайте, но для другого результата поиска эта функция не генерирует ошибку, но затем источник HTML в immidi ate window is ?????? ...
Любые идеи, как заставить его работать?
Привет Даниэль. Я проверил ваше предложение, и это обеспечивает определенный прогресс в решении проблем. – user2127981
Для пары веб-страниц с символом с экрана снимок, отладчик отмечает «responseText = oHTTP.responseText» часть кода с, а oHTTP.responseText содержит «No mapping character ...» – user2127981
И вы попробовали: responseText = StrConv (oHTTP.responseText, vbUnicode)? – dee