在Vbscript中对Microsoft.XmlHttp进行字符编码

在Vbscript中对Microsoft.XmlHttp进行字符编码,vbscript,character-encoding,Vbscript,Character Encoding,我正在编写一个vbscript,从网页中提取一些数据,提取一些关键信息并将其写入文件 目前,我访问页面并将文件内容保存为字符串的脚本如下: Set WshShell = WScript.CreateObject("WScript.Shell") Set http = CreateObject("Microsoft.XmlHttp") 'Load Webpage where address is URL http.open "GET", URL, FALSE http.send "" 'Assi

我正在编写一个vbscript,从网页中提取一些数据,提取一些关键信息并将其写入文件

目前,我访问页面并将文件内容保存为字符串的脚本如下:

Set WshShell = WScript.CreateObject("WScript.Shell")
Set http = CreateObject("Microsoft.XmlHttp")

'Load Webpage where address is URL
http.open "GET", URL, FALSE
http.send ""
'Assign webpage contents as a string to variable called Webpage
WEBPAGE = http.responseText
我需要将内容保存到字符串中,这样我就可以使用正则表达式来提取我需要的内容

除了页面包含非标准字符(如é)外,此脚本工作正常。当页面包含类似的内容时,脚本抛出错误并停止

我猜这与编码有关,但我不知道如何修复它。谁能给我指出正确的方向吗?谢谢各位

编辑

多亏了这里的帮助,我意识到我问错了问题!结果是我下载的内容很好-问题是,后来我试图编辑它并将其写入一个文件,而该文件的格式错误。我有这个:

Set objTextFile = objFSO.OpenTextFile(OutputFile, 8, True,)
将其更改为:

Set objTextFile = objFSO.OpenTextFile(OutputFile, 8, True, -1)

好像已经修好了。多么疯狂的世界啊?谢谢您的帮助。

您可能需要在发送前设置正确的标题栏

下面只是一个例子。你需要弄清楚这到底是为你的网站

   http.open "GET", URL, FALSE
    http.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
    http.SetRequestHeader "Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"
    http.SetRequestHeader "Accept-Language", "en-us,en;q=0.5"
    http.SetRequestHeader "Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7"
    http.send ""
编辑:

那么这个呢。这里还可以

Dim XMLHttpReq,URL,WEBPAGE
Const Eacute  = "%C3%89"

Set XMLHttpReq = CreateObject("MSXML2.ServerXMLHTTP")

URL = "http://en.wikipedia.org/wiki/%C3%89"
'Load Webpage where address is URL
XMLHttpReq.Open "GET", URL, False
XMLHttpReq.send ""
'Assign webpage contents as a string to variable called Webpage
WEBPAGE = XMLHttpReq.responseText
WEBPAGE = Replace(WEBPAGE, Eacute, "É")
'Debug.Print WEBPAGE
在本例中,E acute返回字符串%C3%89,如果需要,可以将其强制为选择的任何字符

EDIT2:

另外,如果您使用VBScript执行此操作,您可能会发现此方法很有用

Dim XMLHttpReq, URL, WEBPAGE, fso, f
Const Eacute = "%C3%89"
Set XMLHttpReq = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://en.wikipedia.org/wiki/%C3%89"
XMLHttpReq.Open "GET", URL, False
XMLHttpReq.send ""
WEBPAGE = XMLHttpReq.responseText

Save2File WEBPAGE, "C:\Users\osknows\Desktop\test.txt"

Sub Save2File (sText, sFile)
    Dim oStream
    Set oStream = CreateObject("ADODB.Stream")
    With oStream
        .Open
        .CharSet = "utf-8"
        .WriteText sText
        .SaveToFile sFile, 2
    End With
    Set oStream = Nothing
End Sub

除非,我很愚蠢,我还是不明白。以这个页面为例:-在我看来它是utf-8,但是当我将它粘贴到accept字符集中时,它仍然抛出相同的错误。我想我可以将文件作为二进制文件加载,但我不想这样做,因为我想在输出字符串之前处理它。顺便说一下,谢谢你的帮助!事实上,耐心点,我正在玩。。。我可能已经走了!啊,事实上,看起来我问错问题了。你说得很对,这确实管用。这就是我下一步要做的,一旦我把它拉到一个变量中,这个变量会破坏它。哦!让我玩一玩,看看能不能把它修好。非常感谢你的帮助!