首先檢查mysql編碼,先看一下編碼
mysql> SHOW VARIABLES LIKE 'character%';
首先我們將自己的mysql編碼格式設(shè)置為utf8編碼遍膜,需要修改配置文件。
首先將mysql停止
sudo /etc/init.d/mysql stop
然后我們修改配置文件
sudo vim /etc/mysql/my.cnf
[mysqld]
character-set-server = utf8
[mysql]
default-character-set = utf8
保存退出。
重新啟動(dòng)
mysql sudo /etc/init.d/mysql restart
查看mysql編碼格式悼瓮,首先登錄mysql然后查看編碼格式
mysql> SHOW VARIABLES LIKE 'character%';
mysql
這時(shí)我們看到我們的mysql編碼格式已經(jīng)設(shè)置為utf8格式了,但當(dāng)我們使用mysql c 的API向mysql插入數(shù)據(jù)時(shí)還是出現(xiàn)亂碼伟件,這時(shí)候我們需要在連接數(shù)據(jù)庫后調(diào)用
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);