最近在Qt上遇到界面显示中文乱码的问题,实现方法如下:
示例:
QUdpSocket *mUdpRcver;
QString rcvData;
while (mUdpRcver->hasPendingDatagrams())
{
QByteArray datagram;
datagram.resize(mUdpRcver->pendingDatagramSize());
mUdpRcver->readDatagram(datagram.data(), datagram.size());
QTextCodec *tc = QTextCodec::codecForName("GBK");
rcvData = tc->toUnicode(datagram.data());
qDebug()<<"Rcv data is :"<<rcvData<<endl;
emit statusChanged();
}
将UDP发送的数据通过“GBK”编码方式转化成QString。
QString info = mBootReadCtrStatus->rcvData.toUtf8();
mScanCtrStatus->setText(info);
显示窗口接收到UDP数据后通过UTF-8转化显示出中文。
详细说明Qt编码的方式:
1.Qt Creator -> 工具 -> 选项 -> 环境 - >概要 -> 语言
Qt Creator本身界面的语言选择,与cpp文件编码无关,与可执行文件显示编码无关
重新打Qt Creator 此设置才能生效,这个唯一选择<Chinese>
2.Qt Creator -> 工具 -> 选项 -> 文本编辑器 -> 默认文件编码
决定cpp文件编码,不同平台下此设置要相同。如果不同,cpp文件会有好多乱码,且不能被编辑,但不影响编译。重新打Qt Creator 此设置才能生效,这个推荐选&