我正在尝试在 WSH 下使用 JScript 下载此测试页http://173.192.48.92/test.php
。
我正在使用 WinHttp 组件,如下所示:
WinHTTP = WScript.CreateObject('WinHttp.WinHttpRequest.5.1') ;
WinHTTP.Open( 'GET', 'http://173.192.48.92/test.php' ) ;
WinHTTP.Send() ;
WScript.echo( WinHTTP.responseText ) ;
但我无法让它发挥作用。 WinHttp 引发运行时错误,因为页面具有 Content-Type: text/html; charset=UTF-8
但页面的实际内容是 latin1。
有没有办法可以使用 WSH 获取 URL 的内容,无论该内容是什么?
PS:我使用的是 Windows Vista SP2 和 IE9
最佳答案
我不确定是否会解决您的问题,但至少会尝试。
当您在 WSH 中运行脚本时,IE 版本并不重要,因为它们使用单独的脚本主机。你的脚本在我的 XP x64 下运行得很好。
好吧,我的想法是尝试 XMLHttpRequest目的。我将发布 VBScript 代码,我认为如果需要的话将其转换为 JavaScript 并不难。
URL = "http://173.192.48.92/test.php"
Set http = CreateObject("Microsoft.XmlHttp")
http.open "GET", URL, False
http.send ""
If http.status <> 200 Then 'if not OK
WScript.Echo "Response status " & _
http.status & " - " & http.statusText
WScript.Quit 'exit the script
End If
WScript.Echo http.responseText
如果编码是问题,那么您应该在最后一行看到错误。如果是这样,则删除此行并尝试使用 ADO Stream object ,即将其附加到上面的代码中:
Set stream = CreateObject("ADODB.Stream")
With stream
.Open
.Type = 2 'text
.Position = 0
'.Charset = "utf-8"
.Charset = "latin1"
.WriteText http.responseText
.SaveToFile "output.txt", 2
.Close
End With
在我的测试中,它适用于 UTF-8 和 Latin1 字符集,我希望这能解决问题。
好吧,如果这没有帮助,那么请告诉我您遇到的此类错误。
关于windows - 如何使用 Windows 脚本下载字符编码不正确的网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035599/