在VS上使用C++存储中文数据到Mysql时出现乱码的问题

目录

背景

问题

解决方案

方法一

方法二

备注


背景

数据库字符集为: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值