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的相互转换

QString与std::string 有中文时的转换操作

QString与std::string 有中文时的转换操作

将 std::string 转换为 QString

QString, Std::string, char *相互转换

string与QString之间的转换(两种方法:fromStdString直接转换,或者fromLocal8Bit(cstr.c_str())