自问自答吧,找到解决方法了,首先前提是在main.cpp中设置解码:
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
同时别忘了以串口监视工具中设置解码方式为UTF-8(我使用了secureCRT)
然后:
quint16 resultbuf[11];
memset(resultbuf, 0, sizeof(resultbuf));
char utf8out[4]={0,0,0,0};
for (int i = 0; i < 10 i++)
{
unicode_to_utf8(utf8out,(char *)(&resultbuf) );
qDebug()<<QString::number(resultbuf,16)<<QString::fromUtf8(utf8out, 3);
}
其中unicode_to_utf8 函数如下
void unicode_to_utf8(char* pOut,char* pchar)//本函数只适用于汉字转码,不适应于英文数字等
{
// 注意 WCHAR高低字的顺序,低字节在前,高字节在后
pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));
pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6);
pOut[2] = (0x80 | (pchar[0] & 0x3F));
}