QT中遇到从QString::fromUtf8中得到的中文字符串是Unicode
最近正在做一个嵌入式设备的WIFI模块, 其中有个需要获取附近热点列表的功能, 从驱动读出的热点名称是const char *类型的数据, 当热点名称中包含汉字的时候, 使用QString QString::fromUtf8(const char *str, qsizetype size)中得到的QString 是Unicode, 如\\0xfe ,询问了很多资深的工程师都说没有解决办法
自定义函数将Unicode转化成QString
下面展示自定义函数
QString Widget::UnicodeToUTF8(const QString &strUnicode)
{
QString strTemp;
for (int i = 0; i < strUnicode.length();)
{
if (strUnicode.at(i) == '\\')
{
QString str = strUnicode.mid(i+2, i+4);
strTemp.append(str.mid (0,2).toUShort(0,16));
i += 4;
}
else
{
strTemp.append(strUnicode.at(i));
++i;
}
}
QByteArray latin1 = strTemp.toLatin1();
return QString::fromUtf8(latin1.data());
}
经过测试,中文,英语,日语,俄语等都能正常显示