文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>mysql中插入和查询汉字时乱码问题解决

mysql中插入和查询汉字时乱码问题解决

时间:2010-10-17  来源:light511

最近做个项目用到MFC+MYSQL,用ODBC插入和查询表中记录,如果带汉字就会出现乱码。各种方法未解决问题。后来换MYSQL的C API做,还有同样的问题。不过经过努力测试问题解决了。原理现在是一知半解,有待深入研究。解决方法如下: 1,安装MYSQL时选UTF8字符集; 2,修改MYSQL的配置文件my.ini中的 [mysql] default-character-set=gbk 3,重新启动MYSQL服务; 4,在MFC程序中每次连接MYSQL服务器成功后执行如下语句,设置字符集:  char * character_set="set names 'gbk'";
 mysql_real_query(&mysql,character_set,(unsigned int) strlen(character_set)); 
5,MFC工程属性中字符集设置为UNICODE编码,但是C API函数执行时任然是ASCI编码,所以在程序中要进行转换:WideCharToMultiByte和MultiByteToWideChar这两个函数。例如: //从界面获取值,然后插入数据库中  wchar_t  wname[100];
 GetDlgItem(IDC_EDIT1)->GetWindowText(wname,50);
 int    iTextLen=WideCharToMultiByte( CP_ACP,0,wname,-1,NULL,0,NULL,NULL);
 char * cname=(char*)malloc(iTextLen+1);
 WideCharToMultiByte( CP_ACP,0,wname,-1,cname,iTextLen,NULL,NULL);
 insert(cname);  free(cname);  //从数据库中获取值显示到前台界面上  qurey(&head);  int n=MultiByteToWideChar(CP_ACP,0,head->name,50,NULL,0);
 wchar_t* pWideChar=(wchar_t*)calloc(n+1,sizeof(wchar_t));
 MultiByteToWideChar(CP_ACP,0,head->name,50,pWideChar,n);
 GetDlgItem(IDC_EDIT3)->SetWindowText(pWideChar);
 free(pWideChar);   总结,通过这个问题的解决我学习了一些字符编码的知识,收获很大。注意几个地方字符集的编码设置要一直。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载