- 论坛徽章:
- 0
|
5可用积分
如题,当我用程序插入中文时,数据库相应字段显示为空。
表采用utf8编码存储,并且插入时
mysql_query(&mysql,"set names utf8");
但是中文就是插入有问题。
int insert_message(char *id,char *name,char *date,char *email,char *msg_body)
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
int result=0;
char *query=(char *)malloc(2000*sizeof(char));
int is_wrong;
mysql_init(&mysql);
if(!(mysql_real_connect(&mysql,"localhost","root","123","message",0,NULL,0))){
printf("%s",mysql_error(&mysql));
//result=1;
}
mysql_query(&mysql,"set names utf8");
sprintf(query,"insert into message(id,name,date,email,msg_body) values('%s','%s','%s','%s','%s')",id,name,date,email,msg_body);
is_wrong=mysql_real_query(&mysql,query,strlen(query));
if(is_wrong){
printf("%s",mysql_error(&mysql));
//result=1;
}
printf("%s",query);//这个print出来,sql语句是正确的,但是如果有中文,插入的就是空值
free(query);
mysql_close(&mysql);
return result;
}
源文件的编码是gbk;
小弟菜鸟,还请大侠们指点。 |
最佳答案
查看完整内容
mysql_query(&mysql,"set names utf8");改为 mysql_query(&mysql,"set names gbk"); 即可这样就可以插入 gbk编码的中文 ,但查询时 也需要 set names gbk 或者像 2楼的用 iconv相关接口转码
|