2013-07-03 4 views
3

У меня проблема с преобразованиями строк в utf-8. Я использую стандартный метод Indy для отправки с преобразованием внутри:Indy, IdTCPSever отправка данных в utf = 8 charset

AContext.Connection.IOHandler.writeln(Utf8Encode('ĄĘÓ')); 

но клиент читает их как «???» - 3f 3f 3f в hex (я проверил его, используя WireShark тоже).

Я использую Delphi XE и Indy 10.

Большое спасибо за любую помощь.

~ Артик

+2

Я знаю, что могу использовать что-то вроде этого: AContext.Connection.IOHandler.writeln ('ЭП', TIdTextEncoding.UTF8); но что я могу сделать, чтобы отправить TStringlist в обычную строку. Итерация элементами TStringlist не приводит к решению в моей ситуации. – Artik

+1

Существует функция перегрузки 'TIdIOHandler.Write()' для данных 'TStrings' и имеет необязательный параметр' TIdTextEncoding', например: 'AContext.Connection.IOHandler.Write (MyStringList, False, TIdTextEncoding.UTF8);' –

ответ

3

Я нашел решение моей проблемы, я думаю, самый простой, используя код, как показано ниже:

uses 
    IdGlobal; 

begin 
    aContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8; 
end;