QT 与 android java socket通讯 中文字符编码问题 解决

QT作为 socket server,接受java端发送来的数据。(通过UTF8编码进行数据传输)

         qint64len = sock->bytesAvailable();

    qDebug()<<"socket data len:"<< len;
    QByteArray alldata = sock->read(len)
    QTextCodec *utf8codec = QTextCodec::codecForName("UTF-8");
    QString utf8str = utf8codec->toUnicode(alldata.mid(2));
    qDebug()<<"hex:["<<alldata.toHex().toUpper()<<"]";
    qDebug()<<"utf-8 ["<< (utf8str) << "]";



QT 服务器端接受数据问题来了:

通过对发送过来的数据打印16进制发现,前面多两个0,所以对网络数据编码时从第三字节开始执行UTF8编码 mid(2)。

如果直接对接受的readAll()数据执行utf8编码,数据肯定不正确。


你可能感兴趣的:(android,通信,qt)