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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2015, 10:17   #11
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от ZuBy Посмотреть сообщение
какая Delphi?
у меня Delphi XE7, проблем нет.

Поиграй с параметрами
Код:
 Result := StringOf(Base64.Convert(Base64. Default, TEncoding.UTF8, StrArray));
Тоже Delphi XE7. У вас изначально данные приходят в UTF-8 кодировке?

Особо не по экспериментируешь. Base64 может быть только Default.
Код:
Result := StringOf(Base64.Convert(Base64.UTF8, TEncoding.ANSI, StrArray)); //No mapping for the Unicode character exists in the target multi-byte code page
Цитата:
Сообщение от kta87 Посмотреть сообщение
К модулям IdGlobal;
Запрос
Код:
 html := IdHTTP1.Get('ссылка', IndyTextEncoding_UTF8);
[dcc32 Error] Unit22.pas(79): E2250 There is no overloaded version of 'Get' that can be called with these arguments

Запутался. С помощью TIdHTTP получаем данные из PHP. Данные приходят в UTF-8 кодировке. Дальше эти данные нужно перевести в читаемый вид для TMemo или просто переменной типа string.

Последний раз редактировалось Shouldercannon; 01.03.2015 в 15:09.
Shouldercannon вне форума Ответить с цитированием
Старый 02.03.2015, 00:09   #12
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

если обновить инди до последней версии то перегруза не будет. Я так понимаю вы работаете с родным для Д7 инди.
kta87 вне форума Ответить с цитированием
Старый 02.03.2015, 06:41   #13
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от kta87 Посмотреть сообщение
если обновить инди до последней версии то перегруза не будет. Я так понимаю вы работаете с родным для Д7 инди.
Версия Indy 10.6.1.5182 в Delphi XE7
Shouldercannon вне форума Ответить с цитированием
Старый 02.03.2015, 08:18   #14
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Shouldercannon, у вас уже приходит в utf8... может попробуйте вот так.. WideString(UTF8Decode(html)), ну вместо WideString можно AnsiString или что вам удобнее.
kta87 вне форума Ответить с цитированием
Старый 02.03.2015, 20:30   #15
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от kta87 Посмотреть сообщение
Shouldercannon, у вас уже приходит в utf8... может попробуйте вот так.. WideString(UTF8Decode(html)), ну вместо WideString можно AnsiString или что вам удобнее.
Код:
var
  HTTP: TIdHTTP;
  s: string;
begin
  try
    HTTP := TIdHTTP.Create(nil);
    try
      s := HTTP.Get('http://localhost/lanm/getpublicmessages.php');
      Memo1.Text := WideString(UTF8Decode(s));
    except
    end;
  finally
    FreeAndNil(HTTP);
  end;
end;
1~2013-03-20 10:00:00~Shouldercannon~??N??????�N ?!end-post
Код:
var
  HTTP: TIdHTTP;
  s: string;
begin
  try
    HTTP := TIdHTTP.Create(nil);
    try
      s := HTTP.Get('http://localhost/lanm/getpublicmessages.php');
      Memo1.Text := AnsiString(UTF8Decode(s));
    except
    end;
  finally
    FreeAndNil(HTTP);
  end;
end;
1~2013-03-20 10:00:00~Shouldercannon~??N???????N ?!end-post
Shouldercannon вне форума Ответить с цитированием
Старый 02.03.2015, 23:52   #16
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Пробуй так
Код:
var
MemStre: TStringStream;
begin
MemStre := TStringStream.Create('');
  try
    idHTTP1.Get('http://localhost/lanm/getpublicmessages.php', MemStre);
    MemStre.Position := 0;
    Memo1.Lines.Text:=UTF8toANSI(MemStre.DataString);
  finally
    MemStre.Free;
  end;
end;
Если все получиться, возможно покатит вариант проще - UTF8ToString
kta87 вне форума Ответить с цитированием
Старый 03.03.2015, 07:03   #17
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

UTF8toANSI и UTF8ToString справились на ура
Код:
Memo1.Lines.Text := Utf8ToAnsi(RawByteString(MemStre.DataString));
Shouldercannon вне форума Ответить с цитированием
Старый 03.03.2015, 08:03   #18
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Shouldercannon, рад что смог помочь.
kta87 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция не распознаёт кириллицу Кипящий чайник Общие вопросы C/C++ 2 23.12.2009 16:55
перевести символ из латиницы в кириллицу StartMis Общие вопросы Delphi 2 30.11.2009 10:07
Не выводит на монитор and77k Общие вопросы C/C++ 2 27.11.2009 10:28
не выводит значение функции... blackbanny Общие вопросы C/C++ 6 17.10.2009 15:19