• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

кодировки

  • Автор темы D!m@n
  • Дата начала
D

D!m@n

Доброго времени суток!

Есть код, который берет из инета содержимое веб-страницы и запихивает в поле текущего документа. Сама веб-страница в Win-1251.
В результате в поле вместо русских букв - абракадабра.

Провел эксперимент: если сохранить содержимое этого поля в файле с помощью NotesStream, используя кодировку Unicode, а потом открыть в браузере как Win-1251 - то появляются русские буквы :(

О чем это говорит? И как привести получаемый контент к нормальному виду?

Код прилагаю.

Заранее спасибо!

Код:
	Dim uiw As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim thisdoc As NotesDocument
Dim httpobj As Variant
Dim url As String

Set uidoc=uiw.CurrentDocument
Set thisdoc=uidoc.Document

url=thisdoc.URL(0)

Set httpobj=CreateObject("winhttp.winhttprequest.5.1")

Call httpobj.Open("GET", url, False)

'это кодировка самой строки - урла (?)
httpobj.Option(2) = "Windows-1251" ' WinHttpRequestOption_URLCodePage = 2 	

Call httpobj.SetRequestHeader ("Accept-Language", "ru")
httpobj.SetRequestHeader "Accept-Charset", "Windows-1251" 
httpobj.setRequestHeader "Accept-Encoding", "gzip, deflate" 

httpobj.setRequestHeader "Content-Language", "ru" 
httpobj.setRequestHeader "Content-Charset", "Windows-1251" 
httpobj.setRequestHeader "Content-Encoding", "gzip, deflate" 
httpobj.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=Windows-1251" 

httpobj.setRequestHeader "CACHE_CONTROL", "no-cache" 
httpobj.setRequestHeader "CONNECTION", "Close" 

Call httpobj.Send()

Call thisdoc.ReplaceItemValue("receivedText", httpobj.ResponseText)

Call uidoc.Refresh

Set httpobj=Nothing
 
D

D!m@n

Еще одна странность: проблема возникает лишь при загрузке некоторых веб-страниц в Win-1251. При загрузке других страниц в той же кодировке - все норм.

Проблему удалось кое-как коряво решить: если неправильно пришедшую страницу сохранить с помощью NotesStream в Win-1252, а открыть в Win-1251, то все заработает.

Товарищи, подскажите, как бы ее решить поэлегантнее? И каковы могут причины этой фигни? :(

Заранее спасибо!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!