這個問題與這一個有關:Character encoding Microsoft.XmlHttp in Vbscript,但有一點不同,一個國家的字符在域名中,不僅是參數。MSXML2.ServerXMLHTTP和國家字符
任務是:從給定的URL下載頁面。
我已經解決了通過ADO從UTF8編碼文件中讀取UTF8字符串到VBScript中的問題。
但現在當我嘗試打開它時,MSXML2.ServerXMLHTTP返回錯誤:該URL無效。
這是VBScript代碼:
Set objStream = CreateObject("ADODB.Stream")
objStream.CharSet = "utf-8"
objStream.Open
objStream.LoadFromFile("fileWithURL.txt")
url = objStream.ReadText()
objStream.Close
Set XMLHttpReq = CreateObject("MSXML2.ServerXMLHTTP")
XMLHttpReq.Open "GET", url, False
XMLHttpReq.send
WEBPAGE = XMLHttpReq.responseText
如果你把像hxxp://россия.рф/main/page5.html到UTF8編碼fileWithURL.txt腳本會提高,而一個錯誤hxxp://google.com。
解決方法是使用ascii表示域名 - 但我還沒有發現用於vbscript的PunnyCode編碼器(除了Chillkat這對我的任務來說是一種過度消耗)。
將感謝您對主要問題或解決方法的幫助。
沒有什麼內置做到這一點,你就必須要麼試圖建立解碼/編碼算法自己*(記住VBScript不玩字節層次的東西不錯)*或承擔損失和使用[ChillkatSoft](https://www.example-code.com/vbscript/punycode.asp)或[Motobit ByteArray](http://www.motobit.com/help/scptutl/cm440.htm)COM組件來爲您完成繁重的工作。 – Lankymart
感謝您的快速響應!所以它真的不起作用,因爲它不應該 - 它是正確的嗎?換句話說,MSXML2.ServerXMLHTTP不支持域名中的國家字符,是嗎?你建議兩種建議編碼器中的哪一種? –
['IServerXMLHttpRequest'](https://msdn.microsoft.com/en-us/library/ms762278(v = vs.85).aspx)首次作爲MSXML 3.0的一部分發布,因此我們正在討論15年或因此,它從來沒有被設計爲只處理IRI,更不用說[IRI直到2005年才被定義](https://en.wikipedia.org/wiki/Internationalized_Resource_Identifier)。 – Lankymart