帮UP了!=========================================================
我的回复,尽可能为你分忧解难!
BLOG:blog.csdn.net/softj --欢迎光临,有更多信息等着你!
QQ群:8476022专研数据库          --大家进来聊一聊!
MSN:[email protected] --这不常用!
Mail:[email protected] --有什么问题可以和我来EMAIL!
=========================================================

解决方案 »

  1.   

    应该是字符集不一致所造成的,你用vc进行插入的数据的编码和数据库里面数据编码不一致。查查你数据库的编码,一般默认的字符集是latin1,即ISO-8859-1不支持中文,要改为gb2312,gbk,utf8才支持中文。
      

  2.   

    好像不是这么回事啊。
    以下是我的设置
    mysql> show variables like "%char%";
    +--------------------------+----------------------------------------------------
    -----+
    | Variable_name            | Value
         |
    +--------------------------+----------------------------------------------------
    -----+
    | character_set_client     | gbk
         |
    | character_set_connection | gbk
         |
    | character_set_database   | gbk
         |
    | character_set_results    | gbk
         |
    | character_set_server     | gbk
         |
    | character_set_system     | utf8
         |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
    ets/ |
    mysql> show variables like "%coll%";
    +----------------------+----------------+
    | Variable_name        | Value          |
    +----------------------+----------------+
    | collation_connection | gbk_chinese_ci |
    | collation_database   | gbk_chinese_ci |
    | collation_server     | gbk_chinese_ci |
    +----------------------+----------------+
    3 rows in set (0.00 sec)
    在命令行模式插入也是正确的。
    mysql> insert into file_info
        ->    (file_name,file_index,file_length,file_info)
        -> values
        ->    ("c:\\你好.txt",3,1234,"数据库管理");
    Query OK, 1 row affected (0.00 sec)mysql> select file_name from file_info;
    +-------------+
    | file_name   |
    +-------------+
    | c:\你好.txt |
    +-------------+
    1 row in set (0.00 sec)
    可用vc插入就回出错。
    sprintf(strSql,"insert into file_info(file_name,file_index,file_length,file_info) Values    ('c:\\你好.txt',3,1234,'数据库管理')");//如果用这条语句插入不会成功 
    sprintf(strSql,"insert into file_info(file_name,file_index,file_length,file_info) Values    (convert('c:\\你好.txt' using gbk),3,1234,convert('数据库管理' using gbk))");//这条语句可以插入成功
    if(mysql_query(mysql,strSql))
    {
    m_ShowResult=m_ShowResult+"更新错误\n";
    if(mysql_error(mysql)[0] != '\0')
    {
    m_ShowResult=m_ShowResult+mysql_error(mysql);
    AfxMessageBox("mysql 错误!");
    } UpdateData(false);//显示 
    return;
    }
    可是插入成功后查询出来的结果是:
    'c:????.txt', 3, 1234, '?????????í'
    为什么呢?
      

  3.   

    sprintf(strSql,"insert into file_info(file_name,file_index,file_length,file_info) Values    ('c:\\你好.txt',3,1234,'数据库管理')");//如果用这条语句插入不会成功 
    如果在这条语句之前先执行sql语句
    “set client gbk"//具体语句可能记得不清楚,但大概是设置客户端字符集
    可以插入成功,但查询出来仍然是问号?
    我真是山穷水尽了
      

  4.   

    先执行下面的语句,再查询试试:
    SET character_set_client = gbk;
    SET character_set_connection = gbk;
    SET character_set_database = gbk;
    SET character_set_results = gbk;
    SET character_set_server = gbk;SET collation_connection = gbk_bin;
    SET collation_database = gbk_bin;
    SET collation_server = gbk_bin;
      

  5.   

    在插入语句执行之前先执行"SET NAMES 'gbk'",数据可以插入成功,查询出来也不是乱码
      

  6.   

    你用的VC,请改用sprintf的宽字符版本函数试试!(好像是wsprintf)因为sprintf不支持双字节的字符处理!字义字符串请用TCHAR类型,具体请参考windows程序设计类图书!