我的mysql数据库用的是 utf8字符集,现在我要用
std::string com ="insert into `svpnrc`(`id`,`name`,`rc_grp_id`,`ip_from`,`ip_to`,`port_from`,`port_to`) values ( '30','士大夫啊','123','123','123','123','123');";
int r = mysql_query(hnd,com.c_str()); 
执行一条插入语句,插入时成功了 可是name字段显示的是乱码,我将com先转换成utf8格式的,在插入可是显示的是一模一样,由asii转换成utf8是正确的,请问我如果要插入 中文字符我该如何处理

解决方案 »

  1.   

    加一句。set names 'utf8'mysql_query(hnd,"set names 'utf8'"); 
    std::string com ="insert into `svpnrc`(`id`,`name`,`rc_grp_id`,`ip_from`,`ip_to`,`port_from`,`port_to`) values ( '30','士大夫啊','123','123','123','123','123');";
    int r = mysql_query(hnd,com.c_str()); 
    关于字符集你可以参考一下这个贴子。
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
      

  2.   

    show variables like 'char%'; 
    贴结果
      

  3.   

    应该不是C的问题,建议你提供如下信息。1. 看一下MySQL的字符集默认设置。
    mysql> show variables like 'char%';
    +--------------------------+-----------------
    | Variable_name            | Value
    +--------------------------+-----------------
    | character_set_client     | latin1
    | character_set_connection | latin1
    | character_set_database   | latin1
    | character_set_filesystem | binary
    | character_set_results    | latin1
    | character_set_server     | latin1
    | character_set_system     | utf8
    | character_sets_dir       | C:\Program Files
    +--------------------------+-----------------
    8 rows in set (0.00 sec)mysql>2。 看一下你这个表的字符集设置。
    show create table svpnrc;
      

  4.   

    svpnrc  CREATE TABLE `svpnrc` (               
              `id` int(11) DEFAULT NULL,          
              `name` varchar(100) DEFAULT NULL,   
              `rc_grp_id` int(11) DEFAULT NULL,   
              `ip_from` int(11) DEFAULT NULL,     
              `ip_to` int(11) DEFAULT NULL,       
              `port_from` int(11) DEFAULT NULL,   
              `port_to` int(11) DEFAULT NULL      
            ) ENGINE=MyISAM DEFAULT CHARSET=utf8  
      

  5.   

    mysql_query(hnd,"set names 'utf8'"); 
    std::string com ="insert into `svpnrc`(`id`,`name`,`rc_grp_id`,`ip_from`,`ip_to`,`port_from`,`port_to`) values ( '30','士大夫啊','123','123','123','123','123');"; 
    int r = mysql_query(hnd,com.c_str()); 我在执行mysql_query前都有加mysql_query(hnd,"set names 'utf8'"); 现在关键的问题是 中文字符会出现'/0'的字符,使sql语句自动截断 从而执行不成功
      

  6.   

    '/0'是什么?关注!
    我都是set names  'gbk'
      

  7.   

    用set names  'gbk'试试!
      

  8.   

    你开始安装mySql时,最好就设置成utf-8,以后就没有这个问题了。