QString和std::string转换乱码与sqlite存储汉字乱码
Posted 小哈龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QString和std::string转换乱码与sqlite存储汉字乱码相关的知识,希望对你有一定的参考价值。
在使用sqlite存储数据时,当存入字段是汉字时,使用如下方式存储,存储在数据库的字段是可以正常显示的
std::wstring wstr=_T("汉字");
std::string str=ws2s(wstr); //ws2s为字符转换函数
当从数据库读取数据时,保存为std::string,如果字符串包含汉字,在列表中显示时,会出现乱码现象,此时,需要将std::string正确转换为QString ,如下
std::string cstring;
QString qstring;
//从std::string 到QString
qstring = QString(QString::fromLocal8Bit(cstring.c_str()));
//从QString 到 std::string
cstring = std::string((const char *)qstring.toLocal8Bit().constData());
参考文章:https://blog.csdn.net/jigetage/article/details/88669263
以上是关于QString和std::string转换乱码与sqlite存储汉字乱码的主要内容,如果未能解决你的问题,请参考以下文章
QString, Std::string, char *相互转换
string与QString之间的转换(两种方法:fromStdString直接转换,或者fromLocal8Bit(cstr.c_str())