XMLHTTP和特殊字符(例如,重音符号)

时间:2011-08-17 22:18:13

标签: vba character-encoding special-characters xmlhttprequest

我通过VBA使用Microsoft.XMLHTTP来获取网页的正文。在这样做时,é等字符会替换为“?”或同样没用的东西。

以下是基本代码:

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(以及一些粗略的谷歌搜索),我可以使用以下代码拉出重音字符:

 ' 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 个答案:

答案 0 :(得分:3)

问题可能是您实际上没有发送编码为utf-8的数据。它可能是在Ansi或您使用的任何字符串/文件编码。然后它将无法在ASCII代码中使用高于127的字符。你确定原始文本流是utf-8吗?您是否尝试过其他编码,如iso- *格式之一?