在vs2005下用C api连接mysql数据库,mysql安装时设置编码是utf8,
但如果数据库中是正常的中文字符,查询出来也是中文字符,没有问题,
但在insert进去的中文字符,却是乱码,查询也是乱码
以下是在数据库中看到的乱码字符
=================================================================================================
INSERT INTO `t_evaluateinfo` (`ID`, `SATISFACTION`, `EMP_NAME`, `NETADDR_NAME`, `DDTT`, `NETADDR_NO`, `DESCC`) VALUES 
  (1,'满意','小沈阳','南山蛇口营业厅','2010-01-02 08:44:23','wd456','fd'),//这个是手动输入的
  (43,'fd',NULL,NULL,NULL,NULL,NULL),
  (44,'fd',NULL,NULL,NULL,NULL,NULL),
  (45,'ÂúÒâ',NULL,NULL,NULL,NULL,NULL),
  (50,'ÂúÒâ',NULL,NULL,NULL,NULL,NULL),
  (51,'ÂúÒâ','СÉòÑô','ÄÏɽÉß¿ÚÓªÒµÌü','2010-01-02 08:44:23','wd456','fd'),
  (54,'·Ç³£ÂúÒâ','³ÉÁú','ÂÞºþÁ«ÌÁÓªÒµÌü','2010-06-24 15:50:36','wd123','descc'),
=====================================================================================================
if((mysql=mysql_init((MYSQL*)0))&&
mysql_real_connect(mysql, "127.0.0.1", "root", "123456",
"evaluateweb_int_flyoadb", 3306, NULL, 0))
{
AfxMessageBox("连接失败");return ;
          }
CString insertMysql ="insert into t_evaluateinfo (SATISFACTION) values('一般')";

if ( mysql_query(mysql,insertMysql )) 
{
                AfxMessageBox("添加失败");return ;            
}
==============================================================================================
有人推荐用这个设置,
         mysql_query("SET NAMES utf8");一个参数是mysql句柄,一个是sql语句,这个应该不行

以下两种方法都试了,都不行,
mysql_set_character_set(mysql, "utf8");
int ret = mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "utf8");

解决方案 »

  1.   

    有人推荐用这个设置,
      mysql_query("SET NAMES utf8");一个参数是mysql句柄,一个是sql语句,这个应该不行你要设置为gbk或是gb2312
      

  2.   

    尝试在建立数据库连接,创建表,插入数据之前,都设定一下字符集.
    mysql_set_character_set(mysql,"gb2312")
      

  3.   

    wangzhjsz 你说的方法的确管用,可以了
      

  4.   

    不太明白,vc下对oracle 数据库的读写和对mysql的操作差别很大吗