Этот вопрос относится к следующему: Character encoding Microsoft.XmlHttp in Vbscript, но в чем-то отличается, национальные символы находятся в доменном имени, а не только в аргументах.MSXML2.ServerXMLHTTP и национальные символы
Задача: загрузить страницу с данного URL-адреса.
Я уже решил проблему передачи строки UTF8 в VBScript, прочитав ее из кодированного файла UTF8 через ADO.
Но теперь, когда я пытаюсь открыть его, 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-представления имени домена, но я еще не нашел кодировщик PunnyCode для vbscript (кроме 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 только URI, не говоря уже о [IRI не был определен до 2005 года] (https://en.wikipedia.org/wiki/Internationalized_Resource_Identifier). – Lankymart