c mysql 写入中文_C/C++ 向mysql数据库读取、写入中文的解决方法

本文详细介绍了如何配置MySQL服务器的字符集为UTF8,包括修改配置文件、设置查询返回结果和连接字符集等。同时,针对C/C++通过API连接数据库时可能出现的中文插入问题,提出了在连接后设置字符集的解决方法,并推荐使用libiconv库进行字符集转换。此外,还讨论了字符集不匹配可能导致的问题及解决方案。
摘要由CSDN通过智能技术生成

1.首先需要设置mysql服务器的字符集;

一般默认情况下是默认为latinl,你可以手动修改;

这里提供一劳永逸的方法,直接修改配置文件my.ini或者是my.conf,把[mysql]与[mysqld]下的default-character-set=latinl修改为:

default-character-set=utf8;

或者你可以每次都到mysql命令行去设定下;

这里要讲下几个相关的字符集设置项:

character_set_results=utf8; //这个是用来设置查询返回结果的字符集

character_set_client=utf8; //设置客户端的字符集

character_set_connection=utf8; //设置连接的字符集

还有其他几个最好也设置成utf8吧。

显示MYSQL字符集编码 :show variables like 'character%';

类似下面:

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

查看表新建时的字符集:show create table xxxx

查看数据库新建时的字符集:show create database xxxx

更改表的默认字符集: alter table xxxx charset=utf8

更改数据库的默认字符集:alter database xxx charset=utf8

2.当上面都已设置好以后,基本也就可以了,大家都这么说,其实不然;

在C/C++使用API连接到mysql数据库时,需要在连接后设置字符集,调用API函数mysql_set_character_set(&m_mysql, "utf8");

到这里,你可以试下是不是能够插入中文了,还是说当有中文的时候就插不进去,没有中文就可以插进去,如果你成功了,那就不用往下看了;

如果没有就看下一步;

3.代码中的字符集转换;

首先把VC++中的sql语句从gb2312转为utf8,然后再执行,应该就可以了;

这里推荐用libiconv库进行字符集转换。

为什么还要第三步呢?我觉得是客户端传入的字符串的字符集与mysql设置的字符集不匹配,所以就出问题了;

其实在第二步的时候吧utf8改成gb2312也就可以实现了,我觉得这个时候存储是utf8格式,但是传输与显示是gb2312,这里只是我的个人见解;

望大家指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值