首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSXML2.ServerXMLHTTP和国家字符

MSXML2.ServerXMLHTTP和国家字符
EN

Stack Overflow用户
提问于 2016-08-25 13:03:58
回答 1查看 1.4K关注 0票数 2

这个问题与这个问题有关:Vbscript中的字符编码Microsoft.XmlHttp,但有一点不同的是,这些国家的字符都在域名中,而不仅仅是争论。

任务是:从给定的URL下载一个页面。

我已经解决了通过ADO从UTF8编码文件中读取VBScript字符串到VBScript的问题。

但是现在,当我尝试打开它时,MSXML2.ServerXMLHTTP返回错误: URL无效。

以下是VBScript代码:

代码语言:javascript
复制
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编码器(除了齐尔卡特,这对我的任务来说是一个过度)。

将感谢您在主要问题或解决办法上的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 12:24:17

我在我的硬盘驱动器中完成了一段奇妙的旅程,并找到了一个由/为杰斯珀·霍伊编写的代码。这是当时SimpleDNS +的IDN转换工具的源代码。

Archive.org页面快照:http://www.simpledns.com/idn-convert.asp

Archive.org文件快照:idn-convert-asp.zip

您还可以从这个要旨复制整个代码。

创建一个函数来转换URL。

代码语言:javascript
复制
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。

代码语言:javascript
复制
XMLHttpReq.Open "GET", DummyPuny(url), False
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39146150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档