[Qt]QString 与Sqlite3 字符串互动[汉字不乱码]
环境:
Qt C++(msvc c++)
1.将与数据库交互的代码文件编码转换为utf-8-bom编码,(可使用notepad ++进行转换)
2.在代码文件头文件中加上下面代码。
//vs2010 版本是 1600
#if defined(_MSC_VER) && (_MSC_VER >= 1600 )
#pragma execution_character_set("utf-8")
#endif
3.从数据库检索的汉字处理
直接使用QString(azResult[i*ncolumn+1]) 这样编码不会乱码显示
4.向数据库写入汉字
char **zErrMsg = 0 ;QString sql = QString("INSERT INTO ParamGroup (GroupNum,[Group],GroupLv) VALUES('%1' ,'%2','%3')").arg("8").arg("驱动器参数").arg("0");int rc = sqlite_exec(db, sql.toUtf8().data(), NULL,NULL, zErrMsg ) ;if(rc == SQLITE_OK){sqlite3_free( zErrMsg );return false;
}return true;
注:这里的 [Group]使用了方括号是因为 Group 在sql中是个关键字?!。