Что нового

Некорректно выводятся в файл буквы, отличные от английских, прочитанные из html

rais

Новичок
Сообщения
3
Репутация
0
Код:
#include <IE.au3>
$oIE=_IECreate("http://yandex.ru/")
$sHTML=_IEDocReadHTML($oIE)
FileWrite(@ScriptDir&"\test.html",$sHTML)
MsgBox(4096,"HTML",$sHTML)
Например, такой скрипт корректно выводит сообщение на экран, поэтому думаю, что и считано было корректно, а ошибка произошла лишь на этапе вывода в файл. Для данной страницы в выводе вопросительные знаки вместо русских букв.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Это неправильная кодировка...
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
rais
По умолчанию данные в файл сохраняются в кодировке ANSI. А страница Яндекса имеет кодировку UTF-8. Поэтому и файл нужно открыть для записи в нужной кодировке
Код:
#include <IE.au3>
$oIE=_IECreate("http://yandex.ru/")
$sHTML=_IEDocReadHTML($oIE)
$file = FileOpen(@ScriptDir&"\test.html", 2 + 128)
FileWrite($file, $sHTML)
FileClose($file)
MsgBox(4096, "HTML", $sHTML)
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Или поиграться с флагами функций Binary
Код:
$sHtml = StringToBinary(BinaryToString($sHtml, 4))
 
Автор
R

rais

Новичок
Сообщения
3
Репутация
0
InnI сказал(а):
rais
По умолчанию данные в файл сохраняются в кодировке ANSI. А страница Яндекса имеет кодировку UTF-8. Поэтому и файл нужно открыть для записи в нужной кодировке
О, спасибо, то есть функция FileOpen, если я правильно понимаю, фактически не только открывает файл, а и типизирует работу с ним по объявленной файловой переменной до ближайшего закрытия файла.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
rais [?]
О, спасибо, то есть функция FileOpen, если я правильно понимаю, фактически не только открывает файл, а и типизирует работу с ним по объявленной файловой переменной до ближайшего закрытия файла.

Не много не так.
Функция FileOpen просто открывает файл в нужной кодировке / в нужном режиме. А переменные как были так и остались...
 
Верх