qt5.5 tcp服务器中文乱码

图片说明
如图
我client发送部分代码是:
void Widget::send()
{
QString ss="hello server你好,服务器!!!";
tcpSocket->write(ss.toStdString().c_str(),strlen(ss.toStdString().c_str()));
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
//tcpSocket->write(ss.toUtf8());
// QString ss="hello server - 你好,服务器!!!";
// QByteArray dateSend = ss.toLocal8Bit();
// tcpSocket->write(dateSend);
}

server端接收:
void Widget::dataReceived()
{
while(m_pSocket->bytesAvailable())
{
QByteArray vTemp;

    //vTemp = vTemp.to
    vTemp = m_pSocket->readAll();

// QTextCodec *codeTransfor = QTextCodec::codecForName("GBK");
// QString vTempStr = codeTransfor->toUnicode(vTemp);//.mid(2));
QString vTempStr = QTextCodec::codecForName("GBK")->toUnicode(vTemp);
QString vFinalStr = QTextCodec::codecForName("UTF-8")->fromUnicode(vTempStr);
// QString vTempStr = QString::fromLocal8Bit(vTemp);
//QString vTempStr(vTemp);
//QString vTempStr = tr(vTemp.data());
m_pEdt_Info->append(vFinalStr);
}
}

不是我的意思是你的代码页要设置成一样的编码!比如这样:
我一般都是设置成UTF-8的,因为要经常移植到linux,没有什么问题!
图片说明

自己顶,请高手帮忙,万分感谢!!

乱码的一个问题就是编码方式不一致导致的,编码方式要统一!
你这里成这样
QTextCodec *codeTransfor = QTextCodec::codecForName("GBK");

那么你对应的代码文件也要是一样的编码哦

Qt版本5以上,一般不需要再文件里设置编码格式,也很少用tr,_T之类,建议文件格式用utf-8格式,然后的话在添加QString汉子字符串这样:

QStringLiteral("判断");