QT汉字Unicode十六进制乱码转化成正常显示的QString
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()); }
经过测试,中文,英语,日语,俄语等都能正常显示