我做的是把实时库中的数据通过程序导入到历史库mysql中,然后能通过EXCEL查询到历史库的数据。所以我通过在VS中把中文数据导入到了mysql的一个表中,在通过ODBC把数据库中的数据导入到EXCEL时,中文就变成乱码了。但是在DOS窗口中却能正确显示中文。请问这是怎么一回事?谢谢大家帮忙。
输入show variables like 'character%';时得到的结果如下:
| character_set_client     | latin1
     |
| character_set_connection | latin1
     |
| character_set_database   | gb2312
     |
| character_set_filesystem | binary
     |
| character_set_results    | latin1
     |
| character_set_server     | utf8
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\chars
ets\ |
我也看了很多贴子上说 set names 'gbk';但是我输入改变了字符集的格式后,DOS窗口中显示乱码,导出的EXCEL也是乱码了,谁能帮忙看下。

解决方案 »

  1.   

    字符集不统一,
    SET NAMES gb2312
    再导入试试
      

  2.   

    按下贴中的方法检查你的相关字符集设置。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  3.   

    用MYSQLDUMP 导出 此表,看看 编码
    SHOW CREATE TABLE tbl_name
      

  4.   

    mysql> show create table daily_kv_03032011;
    +-------------------+---------------------------------------------------------
    ------------------------------------------------------------------------------
    ------------------------------------------------------------------------------
    -----------------------------------------------------+
    | Table             | Create Table
                                                         |
    +-------------------+---------------------------------------------------------
    ------------------------------------------------------------------------------
    ------------------------------------------------------------------------------
    -----------------------------------------------------+
    | daily_kv_03032011 | CREATE TABLE `daily_kv_03032011` (
      `id` int(10) DEFAULT NULL,
      `sd` int(10) DEFAULT NULL,
      `stn_descr` varchar(45) DEFAULT NULL,
      `sbus_descr` varchar(45) DEFAULT NULL,
      `kv` float DEFAULT NULL,
      `isbus` int(10) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-------------------+---------------------------------------------------------
    ------------------------------------------------------------------------------
    ------------------------------------------------------------------------------
    -----------------------------------------------------+
      

  5.   

    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |你的表的字符休是latin1啊。这样,你需要在你的程序进行处理中文。或者把表中的字符集改为 gbk
      

  6.   

    set names latin1
    最好导出所有表,在统一字符集的下重新插入记录
      

  7.   


    我只需要set names 'gbk';就行了吗?
      

  8.   

    | Variable_name            | Value
         |
    +--------------------------+----------------------------------------------------
    -----+
    | character_set_client     | gbk
         |
    | character_set_connection | gbk
         |
    | character_set_database   | gb2312
         |
    | character_set_filesystem | binary
         |
    | character_set_results    | gbk
         |
    | character_set_server     | utf8
         |
    | character_set_system     | utf8
         |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\chars
    ets\ |
    +--------------------------+----------------------------------------------------
    -----+设置成这样行吗