MSXML2.ServerXMLHTTP 和国家字符
MSXML2.ServerXMLHTTP and national characters
这个问题与这个问题相关:,但有一点不同,国家字符在域名中,而不仅仅是参数。
任务是:从给定的 URL.
下载一个页面
我已经解决了通过 ADO 从 UTF8 编码文件读取 UTF8 字符串到 VBScript 的问题。
但现在当我尝试打开它时 MSXML2.ServerXMLHTTP returns 错误: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 这对我的任务来说太过分了)。
感谢您对主要问题或解决方法的帮助。
我在我的硬盘驱动器的深处进行了一次惊人的旅程,并找到了由 / 为 Jesper Høy 编写的代码。这是当时SimpleDNS Plus的IDN Conversion Tool的源码。
Archive.org 页面快照:http://www.simpledns.com/idn-convert.asp
Archive.org 文件快照:idn-convert-asp.zip
您也可以从 this gist 复制整个代码。
创建一个函数来转换 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), False
这个问题与这个问题相关:,但有一点不同,国家字符在域名中,而不仅仅是参数。
任务是:从给定的 URL.
下载一个页面我已经解决了通过 ADO 从 UTF8 编码文件读取 UTF8 字符串到 VBScript 的问题。
但现在当我尝试打开它时 MSXML2.ServerXMLHTTP returns 错误: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 这对我的任务来说太过分了)。
感谢您对主要问题或解决方法的帮助。
我在我的硬盘驱动器的深处进行了一次惊人的旅程,并找到了由 / 为 Jesper Høy 编写的代码。这是当时SimpleDNS Plus的IDN Conversion Tool的源码。
Archive.org 页面快照:http://www.simpledns.com/idn-convert.asp
Archive.org 文件快照:idn-convert-asp.zip
您也可以从 this gist 复制整个代码。
创建一个函数来转换 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), False