Цитата:
Сообщение от
Aleksey_M
Щас еще глянул - в ie у меня стоит галка в настройках "конвертировать url адреса в utf-8", а оно на это забивает
У меня, увы, аналогично.
Цитата:
Сообщение от
Aleksey_M
На стороне сервера принудительное конвертирование делать не хочется
Дык, как выясняется, в этом нет никакой особой необходимости.
Цитата:
Сообщение от
belugin
вставьте в строку браузера javascript:alert(encodeURIComponent('запрос два')) и нажмите Enter
Спасибо, классно. А если еще убрать alert и оставить только javascript
:encodeURIComponent('запрос два') , то в тело будет выдана строка, которую можно скопировать.
По этим мотивам родил VBA-шную функцию, возвращающую юникодное представление исходной нормальной строки:
Код:
'Код - Excel VBA
Function myEncodeURIComponent(SourceString) As String
'в Tools/References должна быть включена ссылка на "Microsoft Internet Controls" (shdocvw.dll)
Static IE As InternetExplorer 'после первого вызова функции IE сохраняется в памяти для последующих вызовов
If IE Is Nothing Then
'для первого вызова, пока IE еще не определен
Set IE = New InternetExplorer
IE.Visible = True 'на время отладки
End If
If SourceString = "" Then
'если передана пустая строка, то выгружаем нашу служебную копию IE
IE.Quit
Set IE = Nothing
myEncodeURIComponent = ""
Exit Function
End If
IE.Navigate "javascript:encodeURIComponent('" & SourceString & "')"
'Thanks to belugin
myEncodeURIComponent = IE.Document.Body.InnerText
End Function
Получилось несколько заднепроходно, хотя в принципе вполне работоспособно (для тестового, непромышленного использования - хотя иное и не предполагается).
Однако, может быть, можно придумать что-нибудь более элегантное? (т.е. без подъёма доп. копии IE только для того, чтобы конвертить строки в юникод). В Excel VBA ничего похожего не нашёл, так же, как не нашёл библиотеку для References, "отвечающую" за javascript. Может быть, есть какое-нибудь гуманное конвертило в юникод, которое можно встроить в VBA-функцию?