Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1442377244
vegarulez
2015-09-16 07:20
2017.07.16
Twebbrowser+IIHTMLDocument2 парсинг + innerhtml ?


15-1463911682
MsGuns
2016-05-22 13:08
2017.07.16
VS-2014/MS SQL Server


15-1463492615
Crysis
2016-05-17 16:43
2017.07.16
Отловить завершение чужих потоков


15-1463758069
Empleado
2016-05-20 18:27
2017.07.16
Получение данных о папке без FindFirst..FindNext


15-1463907824
Jeer
2016-05-22 12:03
2017.07.16
Питерцы - победители в чм по программированию.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский