Klient-serwer - wymiana danych tekstowych

Odpowiedz Nowy wątek
2019-02-11 20:53
0

Dzień dobry,
Mam problem z poprawnym odbiorem przez klienta danych przesyłanych przez serwer.
Problem dotyczy sytuacji kiedy w przesyłanym tekście pojawiają się polskie znaki.

Serwer C++

...
msg =  accounts->getAccountsId() + ";" + accounts->getName() ;                                  // 
int bytes = send(socket, msg.c_str(), msg.length(),0); // wyslanie danych
...

Metoda accounts->getName() zwraca imię użytkownika pobrane z bazy danych.

Klient Qt 4.8

QString response;
if(server->recv(response))
    {
      qDebug() << response;

Wynikiem qDebug() jest

"11;MaÅgorzata" 

Przed wysłaniem po stronie serwera na konsoli komunikat wyświetla się poprawnie
Nie mogę sobie poradzić z kodowaniem tego komunikatu po stronie klienta, niepoprawne polskie znaki
Proszę o pomoc, jakąś podpowiedź. jak rozwiązać ten problem.

Edit:
Zapomniałem umieścić kodu fukncji recv()

if(socket.state() == QAbstractSocket::ConnectedState)
  {
      socket.flush();
      if(socket.waitForReadyRead(config.getSocketReadTimeout()))
        {
          packet = socket.readLine();
          return true;
        } else return false;
  }
edytowany 6x, ostatnio: marcinzel, 2019-02-12 12:53

Pozostało 580 znaków

2019-02-12 13:17
0

Gdyby ktoś potrzebował rozwiązania to funkcja powinna wyglądać tak


 if(socket.state() == QAbstractSocket::ConnectedState)
  {
      socket.flush();
      if(socket.waitForReadyRead(config.getSocketReadTimeout()))
        {
          packet = QString::fromUtf8(socket.readLine());
          return true;
        } else return false;
  }
edytowany 1x, ostatnio: marcinzel, 2019-02-12 13:18

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0