首先检查mysql编码,先看一下编码
mysql> SHOW VARIABLES LIKE 'character%';
首先我们将自己的mysql编码格式设置为utf8编码,需要修改配置文件。
首先将mysql停止
sudo /etc/init.d/mysql stop
然后我们修改配置文件
sudo vim /etc/mysql/my.cnf
[mysqld]
character-set-server = utf8
[mysql]
default-character-set = utf8
保存退出。
重新启动
mysql sudo /etc/init.d/mysql restart
查看mysql编码格式,首先登录mysql然后查看编码格式
mysql> SHOW VARIABLES LIKE 'character%';
这时我们看到我们的mysql编码格式已经设置为utf8格式了,但当我们使用mysql c 的API向mysql插入数据时还是出现乱码,这时候我们需要在连接数据库后调用
mysql_set_character_set(mysql, "utf8");
可以参考以下代码:
//1. init
MYSQL*mysql = mysql_init(NULL);
if(mysql == NULL)
{
exit(1);
}
//2. real_connect
mysql = mysql_real_connect(mysql,_HOST_,_USER_,_PASSWD_,_DBNAME_,0,NULL,0);
if(mysql == NULL)
{
exit(1);
}
const char * csname = "utf8";
char rSql[500]={0};
mysql_set_character_set(mysql, csname);
sprintf(rSql,"insert into fileTable values('%s','%s', '%s', '%ld')", filename,fileMd5Value,asctime(tblock),len );
if(mysql_query(mysql,rSql) != 0)
{
exit(1);
}
//3. close
mysql_close(mysql);