2014-12-29 3 views
0

У меня есть TcpClient Indy9 в (приложение в D7) с соединить с TCPServer Инди 10.5 (приложение в XE2)Инди 9 TCPClient кодирование

Чтобы установить Encoding в UTF8 в Инди 10 составляет:

TCPClient.IOHandler.DefStringEncoding := TIdTextEncoding.UTF8; 

Как установить кодировку UTF 8 в TCPClient (Indy 9), так как нет свойства DefStringEncoding в IoHandler в Indy 9?

ответ

0

Indy 9 не поддерживает кодировки, а также не поддерживает Delphi 2009+ для Unicode. Все в Indy 9 принимает/основывается только на AnsiString. Строки передаются как есть, как если бы они были необработанными байтовыми массивами.

Итак, не отправляйте свои данные AnsiString через соединение с использованием ANSI. Вы можете отправить/получить его как UTF-8. Вам просто нужно вручную закодировать/декодировать данные AnsiString, вот и все. Indy 9 отправит кодированный UTF-8 AnsiString как есть, и прочитает кодировку UTF-8 AnsiString как есть. Затем вы можете кодировать/декодировать данные AnsiString в/из UTF-8 по мере необходимости в вашем окружном коде.

Например, клиент Indy 9 может это сделать:

IdTCPClient1.WriteLn(UTF8Encode('Some Unicode String Here')); 
... 
S := UTF8Decode(IdTCPClient1.ReadLn); 

Затем сервер Indy 10 может это сделать:

AContext.Connection.IOHandler.DefStringEncoding := TIdTextEncoding.UTF8; 
... 
S := AContext.Connection.IOHandler.ReadLn; 
... 
AContext.Connection.IOHandler.WriteLn(...); 
+0

Спасибо Реми, это то, что мне было нужно –

0

Я не нашел способ установить кодировку UTF8 в Indy 9, затем решил следующее: Зная, что кодировка по умолчанию в Indy 9 TCPClient является ANSI, я настроил кодировку ANSI в приложении TCPServer, преобразовал любой UTF8 строки до ANSI до взаимодействия TCP-сервера с TCPClient, и все это разрешено.

+0

Это не лучший ответ. Он полагается как на клиента, так и на сервер, используя ту же кодировку ANSI, что не гарантируется, если они работают на разных машинах. –

+0

Я согласен Реми, я делаю это, потому что я торопился решить, мог бы показать мне лучший метод? –

 Смежные вопросы

  • Нет связанных вопросов^_^