显示乱码的原因是因为编码格式不一致。
下面附上一个曾经的例子。
QString str = ui->textEdit->toPlainText();
QByteArray text = str.toUtf8();//返回一个字符串的utf-8形式,可以表示所有字符
// QByteArray text = str.toLatin1();//只能输出英文和数字,即拉丁文,汉字会被?代替
// QByteArray text = str.toLocal8Bit();//只能输出英文和数字,汉字会被乱码
qint64 bytes = tcpClient->write(text);
在使用toUtf8()函数转换后进行发送,然后接收端接收后可以正常显示。
if(socketConnected->bytesAvailable()>0)
{
QString str = socketConnected->readAll();//QByteArray data
ui->textEdit->append(str);
ui->RecevieDataLabel->setText(tr("消息接收完成!"));
}