VBA - система не поддерживает указанную кодировку
Ошибка времени выполнения "--1072896658 (c00ce56e)": система не поддерживает указанную кодировку
Я пытаюсь получить данные о ценах с этого сайта: http://web.tmxmoney.com/pricehistory.php?qm_symbol=%5ETTUT. Я получаю сообщение об ошибке "Ошибка времени выполнения" --1072896658 (c00ce56e)': система не поддерживает указанную кодировку ".
Я использовал приведенный ниже код для извлечения данных HTML с большинства веб-сайтов. Это единственный, который дает мне эту ошибку. Я думаю, что возможно, что я получаю ошибку, потому что веб-сайт использует Javascript, но я не уверен. Это определенно связано с макетом "тегов" веб-страницы. Я могу использовать код из первого тега "Quote" ( http://web.tmxmoney.com/quote.php?qm_symbol=%5ETTUT), но не из других вкладок.
Option Explicit
Sub TEST_PULL()
Dim Look_String As String
Dim Web_HTML As String
Dim HTTP_OBJ As New MSXML2.XMLHTTP60
Dim xa As Long
Dim xb As Long
Select Case HTTP_OBJ.Status
Case 0: Web_HTML = HTTP_OBJ.responseText
Case 200: Web_HTML = HTTP_OBJ.responseText **'THE ERROR IS CAUSED HERE**
Case Else: GoTo ERROR_LABEL:
End Select
Look_String = "quote-tabs-content"
xa = IIf(IsNumeric(Look_String), Look_String, InStr(Web_HTML, Look_String))
xb = IIf(xa + 32767 <= Len(Web_HTML), 32767, Len(Web_HTML) - xa + 1)
Web_HTML = Mid(Web_HTML, xa, xb)
ERROR_LABEL:
End Sub
Может кто-нибудь, пожалуйста, помогите мне разобраться
- Почему это происходит
- Как я могу успешно получить эти данные о ценах
Это было бы огромной помощью!!! Спасибо!!!
1 ответ
Это не ты, это они.
Заголовки ответа для страницы, которая вызывает ошибку, указывают кодировку, которая не существует: ISO-8559-1. ISO 8559 не имеет ничего общего с кодировкой текста - фактически он относится к размеру одежды. Это почти наверняка должно быть ISO-8859-1 вместо этого.
Страница цитаты, которая успешно читается, имеет правильную кодировку ISO-8859-1.
Чтобы обойти эту проблему, используйте свойство responseBody, которое содержит необработанные байты перед декодированием. Затем функция StrConv может попытаться преобразовать эти байты в строку Unicode (хотя это может не дать правильных результатов во всех случаях), например так:
Case 200: Web_HTML = StrConv(HTTP_OBJ.responseBody, vbUnicode)