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