2

http://173.192.48.92/test.phpWSHでJScriptを使用してこのテストページをダウンロードしようとしています。

私は次のような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:私はWindowsVistaSP2とIE9を使用しています

4

1 に答える 1

2

あなたの問題を解決できるかどうかわかりませんが、少なくとも試してみます。

スクリプトは別のスクリプト ホストを使用するため、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 の両方で動作し、これが解決策になることを願っています。

それでも解決しない場合は、そのようなエラーが発生したことをお知らせください。

于 2013-02-27T06:23:39.903 に答える