这个问题与这个问题有关:Vbscript中的字符编码Microsoft.XmlHttp,但有一点不同的是,这些国家的字符都在域名中,而不仅仅是争论。
任务是:从给定的URL下载一个页面。
我已经解决了通过ADO从UTF8编码文件中读取VBScript字符串到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编码器(除了齐尔卡特,这对我的任务来说是一个过度)。
将感谢您在主要问题或解决办法上的帮助。
发布于 2016-08-26 12:24:17
我在我的硬盘驱动器中完成了一段奇妙的旅程,并找到了一个由/为杰斯珀·霍伊编写的代码。这是当时SimpleDNS +的IDN转换工具的源代码。
Archive.org页面快照:http://www.simpledns.com/idn-convert.asp
Archive.org文件快照:idn-convert-asp.zip
您还可以从这个要旨复制整个代码。
创建一个函数来转换URL。
Function DummyPuny(ByVal url)
Dim rSegments : rSegments = Split(url, "/")
If UBound(rSegments) > 1 Then
rSegments(2) = DomainPunyEncode(rSegments(2))
End If
DummyPuny = Join(rSegments, "/")
End Function然后在提出请求之前转换您的url。
XMLHttpReq.Open "GET", DummyPuny(url), Falsehttps://stackoverflow.com/questions/39146150
复制相似问题