Суббота, 20.04.2024, 07:10 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
delphicode » Delphi » Вопросы по Delphi » idTCP проблема кодировки руских символов
idTCP проблема кодировки руских символов
d4rkzyДата: Понедельник, 04.08.2014, 15:21 | Сообщение # 1
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
Вообще-м написал клиент чат на двоих к примеру. idtcpServer написан на дельфи 7 и лежит на удаленном сервере, клиент написан на firemonkey XE4 idtcpClient.
При отправке английского текста все круто smile а вот когда отправляю русский текст то русские буковки заменяются на знаки вопросы, те вместо "привет" будет "??????"
как решить проблему?

Добавлено (04.08.2014, 15:21)
---------------------------------------------
И еще, как отправить сообщение от idtcpServer к idtcpClient?

 
xXxSh@dowxXxДата: Понедельник, 04.08.2014, 18:00 | Сообщение # 2
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
На сколько я помню, давным давно в далеких волосатых годах уже обсуждались данные вопросы на форуме, можешь даже попытаться поискать в старых темах, я уже даже к сожалению не помню в каком именно разделе они создавались.

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

По поводу отправки данных с сервера обратно клиенту, тут я уже не помню, давно дело было, нужно поднимать исходники и смотреть, вроде как там были какие то свои подводные камни когда я тестил idTCP.

PS: извиняюсь что не могу помочь кодом в данный момент, так как нету делфи под рукой.
 
d4rkzyДата: Среда, 06.08.2014, 01:36 | Сообщение # 3
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
Цитата xXxSh@dowxXx ()
PS: извиняюсь что не могу помочь кодом в данный момент, так как нету делфи под рукой.

Да не чего страшного, проблему уже решил, idtcpserver/client заменил на tcpserver/client (другой хрень, а работает так же почти)

Команды со сервера на клиент слать так: ClientSocket.Sendln('YEAH');

Добавлено (06.08.2014, 01:36)
---------------------------------------------
UP! Опять проблема
Цитата xXxSh@dowxXx ()
то касается русских букв и символов, то тут тебе нужно будет научить твою программу кодировкам которые ты собираешься в ней использовать, так как без них программа просто не понимает что именно она шлет и принимает в ответ.


Раскажи как ее научить понимать русский текст и символы пожалуйста
Пишу на дельфи ХЕ4, как понял она русский текст не понимает (Попробовал закодировать слово "Привет" в base64 - закодировалось, ну при раскодировке вместо Привет какая ахинея в виде XE7GH2 - как русский язык ее научить понимать и вообще кириллицу


Сообщение отредактировал d4rkzy - Среда, 06.08.2014, 04:51
 
ms301Дата: Воскресенье, 10.08.2014, 12:31 | Сообщение # 4
Постоянный
Зарегистрирован: 28.11.2012
Группа: Пользователи
Сообщений: 101
Статус: Offline
Попробуй указать явно кодировку. Я например в клиенте для чтения текста от сервера делаю так:
Код
procedure TOnReceiverThread.Execute;
var
    x: string;
begin
    inherited;
    while not Terminated and idTCPClient.Connected do
    begin
      x := idTCPClient.Socket.ReadLn(IndyTextEncoding_UTF8);
      TOnProcess.AddMsg(x);
    end;
    inherited;
end;


Вот только это в новой делфи. В делфи 7 кажеться по другому надо указать тип кодировки


Сообщение отредактировал ms301 - Воскресенье, 10.08.2014, 12:32
 
d4rkzyДата: Воскресенье, 10.08.2014, 17:42 | Сообщение # 5
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
ms301, Хрен знаю как это делать корректно, ну я решил все хексить и отправлять в виде хекса, (strtohex) все норм. Тему можно закрыть.
 
dolphinДата: Пятница, 15.08.2014, 21:55 | Сообщение # 6
Администратор
Сообщений: 906
Статус: Offline
d4rkzy, признавайся для чего приложение писал? андройд? АйОС? Работает?

Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
xXxSh@dowxXxДата: Суббота, 16.08.2014, 15:12 | Сообщение # 7
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Цитата dolphin ()
признавайся для чего приложение писал? андройд? АйОС? Работает?

А в чем собственно проблема?

под мобильные платформы типа Андроид и iOS так же пишется приложение (клиент), которое точно так же без проблем общается с ПК через сокеты, я около года назад писал под Андроид клиент-серверное приложение для общения с ПК через сокеты, все работало!

PS: сервер пишется под ПК (необходимо так же учитывать некоторые нюансы по серверу - такие как постоянный "Статический" IP адрес для нормальной работы сервера), можно так же поднять серверную часть например на PHP какого нибудь хостинга, тогда схема общения клиентов будет уже совсем другая.
 
delphicode » Delphi » Вопросы по Delphi » idTCP проблема кодировки руских символов
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz