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
Группа: Пользователи
Сообщений: 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 какого нибудь хостинга, тогда схема общения клиентов будет уже совсем другая.
|
|
| |