windows - 如何使用 Windows 脚本下载字符编码不正确的网页?

标签 windows http scripting jscript wsh

我正在尝试在 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/

相关文章:

c# - 如何在 C# 中为 Windows Metro 风格应用程序在屏幕上绘图?

multithreading - 如何在Delphi中使用管道模式

java - 将 Python Http 请求转换为 Java

linux - 编写一个shell脚本,在该行的前面的文本文件中打印每行的行号

scripting - FFMPEG 脚本将文件夹中的所有 Webm 文件转换为 Gif,然后删除那些 Webm

windows - 如何自动将弹性 IP 地址关联到 AutoScale 组中的 Windows 服务器?

windows - Windows PC 上的 COM 端口表示比特率,还是波特率?

http - URL 哈希在重定向之间持续存在

bash - 如何在子 shell 中执行别名命令

android - 最佳 Android 模拟器设置?