目录
背景
数据库字符集为:utf8
VS编译环境字符集为:简体中文GB2312(代码页:936)
需要执行的SQL语句中含有中文
update nw_sn_info SET main_sn="116",adb_password="黑色" where work_order_id = '2023060606';
问题
SQL语句用CString保存,使用mysql_query()执行语句后,中文内容出现乱码
解决方案
方法一
SQL语句仍用CString保存(GB2312字符集),但执行sql之前,先设置数据库编码为gbk
int bRet = mysql_query(&m_mysql, "set names gbk"); //设置数据库编码为gbk,支持GB2312
bRet = mysql_query(&m_mysql, sql_command);
方法二
SQL语句用utf8字符集的string保存(utf8),但执行sql之前,先设置数据库编码为utf8
string sql = ConvertCStringToUTF8(sql_command);//将sql语句内容设置为utf8字符集格式存储的文本
int bRet = mysql_query(&m_mysql, "set names utf8"); //设置数据库编码为utf8
bRet = mysql_query(&m_mysql, sql.c_str());
因为我的数据库字符集为utf8,所以这里采用方法二
备注
解决方案参考博客:https://blog.csdn.net/lihaidong1991/article/details/104523599