XMLHTTP и специальные символы (например, акценты) - PullRequest
5 голосов
/ 18 августа 2011

Я использую Microsoft.XMLHTTP через VBA, чтобы вставить тело веб-страницы. При этом такие символы, как é, заменяются на «?» или что-то такое же бесполезное.

Вот основной код:

Set objHTTP = CreateObject("Microsoft.XMLHTTP")

objHTTP.Open "GET", ThisWebPage, False
objHTTP.setRequestHeader "Content-Type", _
      "application/x-www-form-urlencoded; charset=UTF-8"
objHTTP.Send ("")

strResponse = objHTTP.responseText

Есть ли способ восстановить страницу с неповрежденными специальными символами?

Примечание: Я также попытался использовать этот заголовок запроса безуспешно:
objHTTP.setRequestHeader "Content-Type", "content=text/html; charset=iso-8859-1"

Заранее спасибо.

Решение
Благодаря Ben.Vineyard (и некоторому беглому поиску в Google) я могу использовать символы с акцентом со следующим кодом:

 ' Create the XMLHTTP object
  Set objHTTP = CreateObject("Microsoft.XMLHTTP")

 ' Send the request
 objHTTP.Open "GET", WhatWebPage, False
 objHTTP.Send ("")

 Dim BinaryStream
 Set BinaryStream = CreateObject("ADODB.Stream")

 With BinaryStream
    .Type = adTypeBinary
    .Open
    .Write objHTTP.ResponseBody

    'Change stream type To binary
    .Position = 0
    .Type = adTypeText

    'Specify charset For the source text (unicode) data.
    .Charset = "iso-8859-1"

    'Open the stream And get binary data from the object
    strResponse = .ReadText
End With

1 Ответ

3 голосов
/ 18 августа 2011

Проблема может заключаться в том, что вы на самом деле не отправляете данные, закодированные как utf-8. Это может быть в Ansi или любой другой кодировке строки / файла, которую вы используете. И тогда он не сможет использовать символы выше 127 в коде ASCII. Вы уверены, что исходный текстовый поток - это utf-8? Вы пробовали другую кодировку, такую ​​как один из форматов iso-

...