Форум: "Начинающим";
Текущий архив: 2017.07.16;
Скачать: [xml.tar.bz2];
ВнизTwebbrowser+IIHTMLDocument2 парсинг + innerhtml ? Найти похожие ветки
← →
vegarulez (2015-09-16 07:20) [0]Привет всем мастерам!
Вопрос заключается вот в чем - хочу с локальной машины загружать шаблон html документа в IIHTMLDocument2 потом добавлять нужные мне строки и отображать в Twebbrowser.
Начинаем с первого.
1.создал документ в кодировке UTF-8<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
</head>
<body >Хелло ВОРЛД!
<table>
<tr><td>тут типа таблица которую буду динамически добавлять</td>
<td> тут тоже</td></tr>
</table>
</body>
</html>
открываю его в IIHTMLDocument2 но он мне его в анси показывает кракозябрами есс-но.
Я подозреваю, что так происходит потому что я его через Tstringlist в DOM документ помещаю, как стринг, чтобы парсить.
Подскажите что не так. вот код:
procedure TFormMain.Button4Click(Sender: TObject);
var
Flags: OLEVariant;
v: Variant;
i:Integer;
Document: IHTMLDocument2;
Strl: TStringList;
sHTMLFile: string;
begin
try
// Документ необходимо создать только один раз за текущую сессию работы
if WebBrowser2.Document = nil then
WebBrowser2.Navigate("about:blank");
// Ожидаем создания документа и позволяем обрабатывать все сообщения
while WebBrowser2.Document = nil do
Application.ProcessMessages;
Document := WebBrowser2.Document as IHtmlDocument2;
Strl := TStringList.Create;
sHTMLFile:= "html\1.htm";
sHTMLFile:= ExtractFilePath(paramstr(0))+sHTMLFile;
if FileExists(sHTMLFile) then
Strl.LoadFromFile(sHTMLFile);
//Document:= CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
Document.designMode:="on";
while Document.readyState <> "complete" do
Application.ProcessMessages;
v := VarArrayCreate([0, 0], VarVariant);
v[0] := Strl.Text;
Document.Write(PSafeArray(System.TVarData(v).VArray));
Document.designMode := "off";
while Document.readyState <> "complete" do
Application.ProcessMessages;
finally
end;
end;
← →
vegarulez (2015-09-16 07:51) [1]ну сообственно да в этом дело и было. Поставил utf8toansi и стало правильно отображаться.
v[0] := utf8toansi(Strl.Text);
← →
sniknik © (2015-09-16 08:31) [2]> да в этом дело и было.
вряд ли, скорее прямо в исходном файле неправильная кодировка.
← →
vegarulez (2015-09-16 09:01) [3]исходный в utf8.
просто я его считываю как string и загружаю потом также и поэтому думаю что в этом была проблема. хотелось бы услышать правильный ответ, от того кто понимает, почему utf8toansi помогло в этой ситуации. Правильно ли я думаю.
← →
vegarulez (2015-09-16 09:05) [4]потому как кто-то до этого писал что дельфи по умолчанию переделывает стринг под анси. не важно utf не utf - и поэтому поместив в стринг я получал абракадабру если стринг загружал в Twebbrowser без перекодировки.
Правильно описываю ситуацию?
Гуру, подскажите.
← →
sniknik © (2015-09-16 10:20) [5]> почему utf8toansi помогло в этой ситуации.
потому что utf8 неправильная кодировка... ты не открываешь урл, ты пишешь прямо в документ, а IE работает с анси... если бы открыл нормально то он бы сам преобразовал.
> переделывает стринг под анси.
тогда, по твоей логике нужна была бы функция ansitoutf8 но помогла utf8toansi. сам же пишешь.
← →
имя (2015-10-20 17:27) [6]Удалено модератором
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.07.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.001 c