C ++, управление через веб-браузер: невозможно изменить кодировку / кодировку - PullRequest
1 голос
/ 28 января 2012

В документе ActiveX для веб-браузера отображается документ, размещенный в приложении C ++. Этот документ имеет метатег, который указывает неверный кодировку, поэтому вывод выглядит забавно. Я знаю правильную кодировку и хочу изменить ее программно, чтобы это исправить. Но что бы я ни пытался, кодировка остается неизменной.

Я уже попробовал, в разных сочетаниях и вкусах:

  • IHTMLDocument2::put_Charset (после окончания загрузки документа);
  • изменение свойства "charset" тега "META" (с использованием IHTMLMetaElement);
  • полное удаление тега "META" (установив для его externalHTML пустую строку);
  • Обновление элемента управления.

Элемент управления демонстрирует замечательную настойчивость в сохранении неправильной кодировки. Какие у меня есть другие варианты? Я не могу манипулировать источником загружаемого документа.

Ответы [ 3 ]

1 голос
/ 08 октября 2012

попробуй поставить designMode свойство "On".

0 голосов
/ 29 января 2012

Вот что в итоге сработало:

В обработчике события браузера "NavigateComplete2",

  • кодировка модифицируется с помощью свойства charset,
  • затем мета-тег отбрасывается, устанавливая его outerHTML в пустую строку,
  • и , затем элемент управления обновляется.

Изменение порядка этих действий или пропуск шага сделает всю операцию недействительной. MSHTML требователен.

0 голосов
/ 28 января 2012

Согласно это , оно должно работать, если вы позвоните IWebBrowser->Refresh() после вызова IHTMLDocument2->put_charset().

...