|
1Qter豆
已知QByteArray接收编码为/xCE/xD2/xCA/xC7/xD6...........(接收正确);
已知对方发送为: ("我是中国人"); 16进制码为: CE D2 CA C7 D6 D0 B9 FA C8 CB ;
==================================;
已知编译环境为: UTF-8编码; VS IDE +QT;
==================================;
故QString至TextEdit显示, 须定义->setText(qstr.toUtf8()); 显示正常;
==================================;
但现在从QByteArray至QString乱码,故增加QString xxx = QString::fromLocal8Bit(QByteArray)转码, 但现在只能部分显示正确(80%), 所以来请教大神, 下面为代码处:
====================================;
void QSerialPort_COM::slotReceiveEvent() //接收数据事件
{
int len = serialPort->bytesAvailable(); //接收长度
if (len > 0)
{
QByteArray arrayBuf = serialPort->readAll(); //读取所有字节
//qDebug() << "++++++++++++++++\r\n" << arrayBuf;
//QString buf = arrayBuf;
//QString buf = QString(arrayBuf);
QString buf = QString::fromLocal8Bit(arrayBuf);
//qDebug() << "++++++++++++++++\r\n" << buf;
if (!arrayBuf.isEmpty())
{
if (ui.checkBox_rxHEX->isChecked())ui.textEdit_receive->insertPlainText(arrayBuf.toHex()); //添加文本
else ui.textEdit_receive->insertPlainText(buf.toUtf8()); //添加文本
ui.textEdit_receive->moveCursor(QTextCursor::End); //文本光标移至最底部
}
}
}
|
|