2013-02-23 22 views
1

我試圖在WSH下使用JScript下載此測試頁面http://173.192.48.92/test.php如何使用Windows腳本下載具有不正確字符編碼的網頁?

我使用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

回答

0

我不知道我是否會解決您的問題,但至少會嘗試。

當您在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的,我希望這w'd是治癒。

那麼,如果沒有幫助,那麼讓我知道你得到的那種錯誤。

+0

'Microsoft.XmlHttp'對象似乎沒有編碼錯誤的問題。然而,'WinHttp.WinHttpRequest'對象似乎有一個不可能解決的問題,WinVista上的編碼錯誤(在Win XP上工作正常)。 – GetFree 2013-03-02 05:25:44

相關問題