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

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 13:11
Откуда: Питер
Контактная информация:

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

Сообщение Duncon » 01 янв 2005, 21:09

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

Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Сообщение 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.
Можно еще использовать шрифт, в котором символы расположены в соответствии с нужной страницей.

Аватара пользователя
AiK
Сообщения: 2271
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

Сообщение 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...
Даже самый дурацкий замысел можно воплотить мастерски

Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 13:11
Откуда: Питер
Контактная информация:

Сообщение Duncon » 18 янв 2005, 13:20

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

Ответить