Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2012, 16:58   #1
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию Русские буквы в Memo, как?

Получаю через TWebBrowser страницу, исходный код записываю в Memo, но вместо русских слов идут каракули
Код:
Конфиденциальность
У меня Delphi XE2 (ENG) на Windows 7 RUS. Пробовал менять шрифт на Arial Unicode MS (поддерживает русские буквы), толку ноль.
Кто сталкивался откликнитесь
bakanaev вне форума Ответить с цитированием
Старый 09.08.2012, 17:10   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

UTF8Encode, UTF8Decode функции
Человек_Борща вне форума Ответить с цитированием
Старый 09.08.2012, 17:16   #3
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

http://www.programmersforum.ru/showp...11&postcount=5

Поиск рулед ... частый вопрос.
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 09.08.2012, 17:30   #4
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Оказалось проблема была не в мемо а в функции обработки исходного кода. Было так
Код:
function WB_GetHTMLCode(WebBrowser1: TWebBrowser): ANSIString;
var
  ps: IPersistStreamInit;
  ss: TStringStream;
  sa: IStream;
  p: integer;
begin
  ps := WebBrowser1.Document as IPersistStreamInit;
  ss := TStringStream.Create('');
  try
    sa := TStreamAdapter.Create(ss, soReference) as IStream;
    if Succeeded(ps.Save(sa, True)) then
    for p:=0 to length(ss.Datastring) do
        begin
        Result:=Result+ss.Datastring[p];
        end;
    result:=utf8toansi(result);
  finally
    ss.Free;
  end;
end
А надо было так
Код:
function WB_GetHTMLCode(WebBrowser1: TWebBrowser; SiteEncoding : TEncoding) : string;
var
   ms : TMemoryStream;
   sL : TStringList;
begin
   ms := TMemoryStream.Create;
   try
      (WebBrowser1.Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms), True);
      ms.Position := 0;
      sL := TStringList.Create;
      try
         sL.LoadFromStream(ms, SiteEncoding);
         result := sL.Text;
      finally
         FreeAndNil(sL);
      end;
 
   finally
      FreeAndNil(ms);
   end;
end;
вызывается так
Код:
  s := WB_GetHTMLCode(WebBrowser1, TEncoding.GetEncoding(1251));
// или
//   s := WB_GetHTMLCode(WebBrowser1, TEncoding.Utf8);
Всем спасибо.
P.S Sm1Le, поиск рулет :D
bakanaev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Русские буквы morgan97 Паскаль, Turbo Pascal, PascalABC.NET 4 10.03.2011 10:15
Как в Qt в консоле отображать русские буквы? Lemo Помощь студентам 0 05.10.2010 14:53
Как сделать так, чтобы в корректно отображались русские буквы(С) Александр Елис Помощь студентам 0 06.11.2009 19:39
Как предать в MySQL русские буквы kiber0net0 БД в Delphi 6 05.09.2008 22:07
Как преобразовать русские буквы в латиницу? Alexander_Gr Microsoft Office Excel 8 03.12.2007 19:49