在Vbscript中对Microsoft.XmlHttp进行字符编码
我正在编写一个vbscript,从网页中提取一些数据,提取一些关键信息并将其写入文件 目前,我访问页面并将文件内容保存为字符串的脚本如下:在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
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字符集中时,它仍然抛出相同的错误。我想我可以将文件作为二进制文件加载,但我不想这样做,因为我想在输出字符串之前处理它。顺便说一下,谢谢你的帮助!事实上,耐心点,我正在玩。。。我可能已经走了!啊,事实上,看起来我问错问题了。你说得很对,这确实管用。这就是我下一步要做的,一旦我把它拉到一个变量中,这个变量会破坏它。哦!让我玩一玩,看看能不能把它修好。非常感谢你的帮助!