Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > TWebBrowser русская кодировка.


Автор: Ak47black 29.8.2007, 17:37
Здравствуйте.
Как TWebBrowser в поменять кодировку.
Я вывожу на TWebBrowser чат  и вместо русских букв вижу нето что надо  smile .
Поискал но решения не нашол.
Подскажите пожалуйста как исправить>  smile 

Автор: aktuba 29.8.2007, 18:43
в html, который выводишь, прописывай кодировку...

Автор: Ak47black 29.8.2007, 21:18
aktuba, А как мне тут сделать (где ввести)?
Я вот так html ввожу
Код

var
  HtmlDocument: IHtmlDocument2;
  WebBody: HTMLBody;
  V: OleVariant;
begin
  HtmlDocument := TWebBrowser.Document as IHtmlDocument2;
  WebBody := HtmlDocument.body as HTMLBody;
  WebBody.insertAdjacentHTML('BeforeEnd', '<font face="Tahoma" size="2">Hello world</font>');

Автор: aktuba 30.8.2007, 02:45
Цитата

aktuba, А как мне тут сделать (где ввести)?


Судя по всему, перед этим блоком, что-то уже есть в WebBrowser. Верно?

Автор: Ak47black 30.8.2007, 18:37
Я делаю 
Код

TWebBrowser.Navigate('about:blank');

, а потом кодом который выше добавляю.

Автор: Ak47black 31.8.2007, 19:33
а что добавить то?

Автор: December 31.8.2007, 20:23
изучи основы хтмл
там написано про обязательные элементы типа Head, body
сделай заготовку, которая содержит <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
и уже к ней применяй свой код
примеры можно найти в дркб

Автор: Ak47black 2.9.2007, 21:12
December, 
А как добавить в Head тот код который ты написал выше?

Автор: aktuba 2.9.2007, 21:33
Цитата

А как добавить в Head тот код который ты написал выше?


Почитай про структуру документа html и все поймешь...

Автор: Ak47black 3.9.2007, 09:39
aktuba, Да мне с html кодом то понятно.
Мне не понятно как в этот TWebBrowser добавить html код в заголовок.
Пробовал с WebBody.insertAdjacentHTML, но не работает.

Автор: December 3.9.2007, 09:52
невозможно добавлять элементы в хеад
надо навигировать на страницу, в которой он уже есть

Автор: Ak47black 3.9.2007, 09:57
December, а ну теперь понятнее ситуация.
Ок. буду пробовать. 

Автор: aktuba 3.9.2007, 10:00
Честно говоря не уверен, но попробуй что-то наподобии:
Код

var
  HTMLDocument: IHTMLDocument2;
begin
  HTMLDocument := WebBrowser.Document as IHTMLDocument2;
  HTMLDocument.charset := 'Windows-1251';
  // Или так
  // HTMLDocument.defaultCharset := 'Windows-1251';

Автор: Ak47black 3.9.2007, 10:19
aktuba, не проверил оба способа, но тоже самое.
December, а какие есть способы есть загрузить уже готовую страницу ?
Я попробовал загрузить из ресурсов.
Вот я сделал  
Код

TWebBrowser.Navigate('res://Project.exe/html/LOADHTML');

Но чтото не работает. (В ресурсах уверен что html есть проверял)
Ошибка
Цитата

Internet Explorer was unable to link to the Web page you requested. The page might be temporarily unavailable.

Я гдето в интернете видел исходник который демонстрирует, как и ресурсов загружать страницы, только шас не могу найти, может кто знает где такой есть?

Автор: aktuba 3.9.2007, 10:25
Цитата

может кто знает где такой есть?


В DRKB и в DelphiWorld...

P.S.: ты бы тестовый проект выложил - людям проще было бы искать решение...

Автор: Ak47black 3.9.2007, 10:47
У меня чтото в коде еше не правильно.
Потому что сделал тестовый проект и используя 
Код

ChatBrowser.Navigate('about:<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title>Hello</title></head><body></body></html>');

Русские буквы видны.

Добавлено через 25 секунд
Спасибо все за ваши посты.

Автор: Ak47black 3.9.2007, 11:06
Народ тут не изза html кодировки, тут изза Delphi кодировки чтото.
Если не верите сделайте такой код 
Код

procedure TForm1.FormCreate(Sender: TObject);
var
  HtmlDocument: IHtmlDocument2;
  WebBody: HTMLBody;
  V: OleVariant;
  Text: String;
begin
  WebBrowser.Navigate('about:<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><title>Hello</title></head><body></body></html>');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
    Application.ProcessMessages;
  HtmlDocument := WebBrowser.Document as IHtmlDocument2;
  WebBody := HtmlDocument.body as HTMLBody;
  Text:= 'Hello Абракадабра';
  WebBody.insertAdjacentHTML('BeforeEnd', '<font face="Tahoma" size="2">'+Text+'</font>');
  WebBody.insertAdjacentHTML('BeforeEnd', '<font face="Tahoma" size="2">Hello Абракадабра</font>');
end;

Получите
Цитата

Hello ÀáðàêàäàáðàHello Абракадабра

Есть какието предположения как это можно исправить?
И еше прикрепляю тестовый проект

Автор: aktuba 3.9.2007, 11:13
Цитата

Получите


Код

Hello АбракадабраHello Абракадабра


Все нормально!!!

Автор: Ak47black 3.9.2007, 11:57
aktuba, Ну какая версия Delphi?
Я еше раз проверил, у меня всеровно тоже самое (неправильно).

Автор: aktuba 3.9.2007, 13:23
Цитата

Ну какая версия Delphi?


TurboDelphi...

Автор: Ak47black 3.9.2007, 13:38
aktuba, Тут скорей всего что версия другая.
А у когонибудь есть Delphi 7? Можете ктонибудь просто проверить?

Автор: elementos 19.2.2008, 00:25
у меня открывается браузер с таким кодом:

Код

s := concat('about:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">',  #10#13,
'<head>', #10#13, '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">', #10#13, '</head>', #10#13,
'<body>', #10#13, '</body>');
webbrowser.Navigate(s);


он работает в режиме редактора (DesignMode := 'On')
когда только запустить приложение, и ничего не делать (не изменять содержимое) то можно увидеть через исходный код страницы, что кодировка 1251, но когда что-то напишешь в нем, и посмотреть, то она сразу становится unicode.
что за ( smile ) и как исправить?

Автор: elementos 20.2.2008, 10:00

аyу, есть кто живой?... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)