Задание кодировки в WebBrowsere

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Задание кодировки в WebBrowsere

Duncon » 18 янв 2005, 13:20

Спасибо за мучение мозга. К сожалению, задать только 1 конкретную кодировку так и не получилось,
оставим это на совести разработчиков Delphi.
Да, к вопросу,,, уже неделю юзаю Delphi 2005(AE) - Просто супер, дизайн просто мега удобный,
Дофига новых возможностей, более ли менее нормальный help с несколькими языками,
а еще обещают в скором времени возможность работы и с Cи до кучи!!!

AiK » 18 янв 2005, 02:31

Кодировку надо указывать в самих страницах.
Не совсем верное решение. Дело в том, что по протоколу HTTP/1.1 сервер может отослать документ именно в той кодировке, которую ожидает браузер. Т.е. документ на сервере может храниться в KOI-8, а клиенту (то бишь браузеру) передавать его в Windows-1251, осуществляя перекодировку на лету. Если при этом сервер забудет в заголовках HTTP ответа указать кодировку (случается при неверной настройке сервера довольно часто), то браузер будет введён в заблуждение указанием кодировки KOI8-r. Впрочем, сей факт слабо утешает - браузер может направляться на неподконтрольные веб-сервера.
doc.Set_defaultCharset
На сколько я помню, это не работает. И, если я правильно понимаю, вот по какой причине: дело в том, что при создании документа используется значение дефолтной кодовой страницы из настроек IE. А от TWebBrowser'а мы документ получаем только после того, как он распарсен с уже установленным defaultCharset. Если посмотреть на поведение IE при смене кодировки, то видно, что он по новой парсит документ. Возможно, поможет такое решение: создать новый пустой документ, указать ему нужную дефолтную кодировку и заставить его распарсить HTML предварительно сохранённый из предыдущего документа. Методы на вскидку не вспомню, MSDN'a под рукой нет, а в Google искать лень. Что-то вроде loadfromstring или parse...

Naeel Maqsudov » 18 янв 2005, 01:08

Кодировку надо указывать в самих страницах.

Посмотрите методы из интерфейса IHTMLDocument2 (см Mshtml.pas в C:\Program Files\Borland\Delphi5\Source\Internet)

Возможно что-то типа....

Код: Выделить всё

var
  doc: IHTMLDocument2;
begin
  doc:=WebBrowser1.Document;
  doc.Set_defaultCharset(...)
end;
... но я не уверен.

В TMemo никак. Только перекодировать в Win1251.
Можно еще использовать шрифт, в котором символы расположены в соответствии с нужной страницей.

Задание кодировки в WebBrowsere

Duncon » 01 янв 2005, 21:09

Как задать определенную кодировку для WebBrowserа, чтобы он
работал только с ней при просмотре страниц?( к примеру Unicode(UTF-8))
И еще как задать кодировку отображения и записи в Memo

Вернуться к началу