免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1907 | 回复: 2
打印 上一主题 下一主题

c 中文插入mysql 问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-17 13:55 |只看该作者 |倒序浏览
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相关接口转码

论坛徽章:
0
2 [报告]
发表于 2009-05-17 13:55 |只看该作者

gbk

mysql_query(&mysql,"set names utf8");
改为  

mysql_query(&mysql,"set names gbk");
即可
这样就可以插入 gbk编码的中文 ,但查询时 也需要 set names gbk

或者像 2楼的用 iconv相关接口转码

论坛徽章:
0
3 [报告]
发表于 2009-05-17 16:19 |只看该作者
用iconv转编码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP