idTCP проблема кодировки руских символов
|
d4rkzy
|
Дата: Понедельник, 04.08.2014, 15:21 | Сообщение # 1
|
Постоянный
Зарегистрирован: 15.11.2013
Группа: Пользователи
Сообщений: 135
Статус: Offline
|
Вообще-м написал клиент чат на двоих к примеру. idtcpServer написан на дельфи 7 и лежит на удаленном сервере, клиент написан на firemonkey XE4 idtcpClient.
При отправке английского текста все круто а вот когда отправляю русский текст то русские буковки заменяются на знаки вопросы, те вместо "привет" будет "??????"
как решить проблему?
Добавлено (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
Группа: Пользователи
Сообщений: 98
Статус: 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
|
Администратор
Сообщений: 902
Статус: Offline
|
d4rkzy, признавайся для чего приложение писал? андройд? АйОС? Работает?
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
|
|
|
|
|
xXxSh@dowxXx
|
Дата: Суббота, 16.08.2014, 15:12 | Сообщение # 7
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
Цитата dolphin ( )
признавайся для чего приложение писал? андройд? АйОС? Работает?
А в чем собственно проблема?
под мобильные платформы типа Андроид и iOS так же пишется приложение (клиент), которое точно так же без проблем общается с ПК через сокеты, я около года назад писал под Андроид клиент-серверное приложение для общения с ПК через сокеты, все работало!
PS: сервер пишется под ПК (необходимо так же учитывать некоторые нюансы по серверу - такие как постоянный "Статический" IP адрес для нормальной работы сервера), можно так же поднять серверную часть например на PHP какого нибудь хостинга, тогда схема общения клиентов будет уже совсем другая.
|
|
|
|
|