本帖最后由 khijfv2008 于 2010-11-22 15:00:13 编辑

解决方案 »

  1.   

    SET NAMES GBK
    看看结果
      

  2.   

    查询前先执行SET NAMES GBK;
      

  3.   

    这个属于字符集问题,你看下
    show VARIABLES like 'character_set%';再set names gb2312;
    或则
    SET NAME UTF8;
    看看怎么样
      

  4.   

    看你查是怎么查的?程序文件的编码,
    控制台的编码set names 'xxx'表示用数据库的连接转换编码,xxx表示客户端需求的编码
      

  5.   

    按下贴中方法,贴出你的检查结果。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  6.   

    估计,你的字段中存放的并不是UTF8的编码。
      

  7.   

    show VARIABLES like 'character_set%';
    贴结果
      

  8.   


    mysql> show variables like 'char%'
        -> ;
    +--------------------------+---------------------------------------------------------+
    | Variable_name            | Value                                                   |
    +--------------------------+---------------------------------------------------------+
    | character_set_client     | gbk                                                     |
    | character_set_connection | gbk                                                     |
    | character_set_database   | latin1                                                  |
    | character_set_filesystem | binary                                                  |
    | character_set_results    | gbk                                                     |
    | character_set_server     | latin1                                                  |
    | character_set_system     | utf8                                                    |
    | character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
    +--------------------------+---------------------------------------------------------+
    8 rows in set (0.00 sec)
      

  9.   


    mysql>  show create table gs_userinfo_tbl;
    +-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table           | Create Table                                                                                                                                                                                                                                                        |
    +-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | gs_userinfo_tbl | CREATE TABLE `gs_userinfo_tbl` (
      `user_id` varchar(32) NOT NULL DEFAULT '',
      `nickname` varchar(32) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
      PRIMARY KEY (`user_id`),
      UNIQUE KEY `nickname` (`nickname`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      

  10.   

    mysql> show full columns from gs_userinfo_tbl;
    +----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
    | Field    | Type        | Collation         | Null | Key | Default | Extra | Privileges                      | Comment |
    +----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
    | user_id  | varchar(32) | latin1_swedish_ci | NO   | PRI |         |       | select,insert,update,references |         |
    | nickname | varchar(32) | latin1_bin        | YES  | UNI | NULL    |       | select,insert,update,references |         |
    +----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
    2 rows in set (0.00 sec)
      

  11.   

    你的表字符集是latin1 
    SET NAMES latin1 
      

  12.   

    你的字符集不统一,不知道你表中的内容是latin1、GBK、UTF8,
    估计你要在统一的字符集下重新插入记录
    select hex(有中文内容的字段名) from tt
    贴结果,
      

  13.   

    你的表中的字符集设置是 latin1 ,这样显然,你插入的中文会被转换成latin1 编码来存放。如果你INSERT的时候设置也是latin1 则没有什么问题,但如果你INSERT的时候设置的是其它字符集则会产生编码的转换,从而导致乱码。99%的可能是,你现在数据库表中存储的本身就是乱码了。
    找一条记录SELECT出来,看看实现的编码是什么。select nickname, HEX(nickname ) from gs_userinfo_tbl where user_id  =12345677;然后把这条记录所对应的中文也贴出来。另外你的C++程序中使用的字符集设置是什么?建议你在你的程序中执行一下 show VARIABLES like 'character_set%';看看结果是什么?
      

  14.   

    mysql> select nickname, HEX(nickname ) from gs_userinfo_tbl;
    +--------------+--------------------------+
    | nickname     | HEX(nickname )           |
    +--------------+--------------------------+
    | VV-        | 0E560E562D               |
    | U?Q        | 1055018051               |
    | X=?D0)YX   | 15583D84443029590258     |
    | Q?R         | 1B51D552                 |
    |              | 20                       |
    | *s4Yn0????   | 2A7334596E30DD84DD84     |
    | A            | 41                       |
    | NgRKN6r     | 4E671A524B4E3672         |
    | S            | 53                       |
    | a            | 61                       |
    | eg?n?n       | 65679C6E9C6E             |
    | h            | 68                       |
    | p            | 70                       |
    | s            | 73                       |
    | v            | 76                       |
    | wPwP?v*b?V N | 7750775084762A62FE560B4E |
    | }v?ec?k?=\   | 7D76E56563886B883D5C     |
    | ?u?rKN?[?   | AF75C2724B4E8C5B8E7F     |
    | ?r?P?vAml   | C272B2508476416D136C     |
    | ??í??[      | CE98ED8BD25B             |
    | ????v?[k?   | DE98D47F8476B35B6B86     |
    +--------------+--------------------------+
    21 rows in set (0.02 sec)
    因为数据是别人写进去的,所以我不知道写进去的时候是什么样子,但写数据的人提供了接口可以查出来,不是乱码的,
      

  15.   

    关键是要找到正确的字符集,然后你 set names 'xxxx'; 就可以了。
      

  16.   

    set names 那几种都试过了,,,
      

  17.   

    要不留个邮箱我把数据文件给你,你试下,网上的找到的方法我都试了我用的是C#,写入数据人是用C++C++接口是别人开发的,要是我了解接口怎么实现的我也可以用他的方法解码了,现在我就是不了解
      

  18.   

    +--------------+--------------------------+
    | nickname     | HEX(nickname )           |
    +--------------+--------------------------+
    | VV-        | 0E560E562D               |
    | U?Q        | 1055018051               |
    | X=?D0)YX   | 15583D84443029590258     |为什么不同时给出这三记录所对应的实际内容应该是什么?