今天想把sql manager(mysql管理器)升级一下,下载了一个2010版的,不料,升级后,
用sql manager 2010打开 由sql manager 2005 创建的数据库时中文乱码。
mysql数据库 版本是5.0.41。
我的MYSQL的my.ini关于字符集的配置如下:
[mysql]default-character-set=utf8[mysqld]default-character-set=utf8
数据库创建时client charset:DEFAULT
            Font charset:DEFAULT_CHARSET请问如何解决此问题呢?
注:一个要求就是字符集一定要是utf8,不能用别的,因为可能会保存带有繁体字的记录。

解决方案 »

  1.   

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

  2.   

    这是检查结果:
    mysql> show variables like 'char%';
    +--------------------------+--------------------------+
    | Variable_name            | Value                    |
    +--------------------------+--------------------------+
    | character_set_client     | utf8                     |
    | character_set_connection | utf8                     |
    | character_set_database   | utf8                     |
    | character_set_filesystem | binary                   |
    | character_set_results    | utf8                     |
    | character_set_server     | utf8                     |
    | character_set_system     | utf8                     |
    | character_sets_dir       | D:\MySQL\share\charsets\ |
    +--------------------------+--------------------------+
    8 rows in set (0.00 sec)
      

  3.   

    set names gbk;
    select * from t1;到命令行里看看是不是乱码。每天都有看到乱码的,确实很蛋疼。
      

  4.   

    为什么一定要 set names gbk;
    我用utf8国际字符集不就可以吗?
      

  5.   

    我是指用sql manager 2010管理器打开才会乱码,不是在程序中看到乱码的。
      

  6.   

    你的sql manager 2010支持utf8字符显示吗?不支持就会乱码啊还有,我怀疑sql manager 2010应该有设置client字符集的选项,将其设置为gbk,一切全OK.
      

  7.   

    为什么一定要gbk呢?用utf8不可以吗?
      

  8.   

    这是DDL代码
    CREATE TABLE `LmitTime` (
      `ID` int(11) unsigned NOT NULL auto_increment COMMENT 'ID',
      `iMin` int(11) unsigned NOT NULL COMMENT 'ͨ»°Ê±¼äÏÞÖÆ',
      `SysDate` timestamp NOT NULL default CURRENT_TIMESTAMP COMMENT 'ϵͳʱ¼ä',
      PRIMARY KEY  (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ͨ»°Ê±¼äÏÞÖÆ';后面的注释都乱了
      

  9.   

    在你的MYSQL行命令工具中看一下你的这些内容是否正常。
      

  10.   


    mysql> select * from telbox;
    +----+-------+--------------+------------+--------+---------------------+
    | ID | sLIne | ChannelIndex | sName      | CanUse | SysDate             |
    +----+-------+--------------+------------+--------+---------------------+
    |  1 | 1     |            0 | 1潞脜麓掳      | -1     | 2010-06-15 21:48:27 |
    |  2 | 2     |            1 | 2潞脜麓掳      | -1     | 2010-06-15 21:48:39 |
    |  3 | 3     |            2 | 3潞脜麓掳      | -1     | 2010-06-15 21:50:08 |
    |  4 | 4     |            3 | 4潞脜麓掳      | -1     | 2010-06-16 02:04:26 |
    |  5 | 5     |            4 | 5潞脜麓掳      | -1     | 2010-06-19 22:11:40 |
    |  6 | 6     |            5 | 6潞脜麓掳      | -1     | 2010-06-19 22:11:59 |
    |  7 | 7     |            6 | 7潞脜麓掳      | -1     | 2010-06-19 22:12:13 |
    |  8 | 8     |            7 | 8潞脜麓掳      | -1     | 2010-06-19 22:12:23 |
    |  9 | 9     |            8 | 9潞脜麓掳      | -1     | 2010-06-19 22:12:40 |
    | 10 | 10    |            9 | 10潞脜麓掳     | -1     | 2010-06-19 22:13:54 |
    | 11 | 11    |           10 | 11潞脜麓掳     | -1     | 2010-06-19 22:14:02 |
    | 12 | 12    |           11 | 12潞脜麓掳     | -1     | 2010-06-19 22:14:11 |
    | 13 | 13    |           12 | 13潞脜麓掳     | -1     | 2010-06-19 22:14:19 |
    | 14 | 14    |           13 | 14潞脜麓掳     | -1     | 2010-06-19 22:14:26 |
    | 15 | 15    |           14 | 15潞脜麓掳     | -1     | 2010-06-19 22:14:34 |
    | 16 | 16    |           15 | 16潞脜麓掳     | -1     | 2010-06-19 22:14:42 |
    | 17 | 17    |           16 | 17潞脜麓掳     | -1     | 2010-06-19 22:14:52 |
    | 18 | 18    |           17 | 18潞脜麓掳     | -1     | 2010-06-19 22:15:03 |
    | 19 | 19    |           18 | 19潞脜麓掳     | -1     | 2010-06-19 22:15:13 |
    | 20 | 20    |           19 | 20潞脜麓掳     | -1     | 2010-06-19 22:15:31 |
    | 21 | 21    |           20 | 21潞脜麓掳     | -1     | 2010-06-19 22:16:15 |
    | 22 | 22    |           21 | 22潞脜麓掳     | -1     | 2010-06-19 22:16:27 |
    | 23 | 23    |           22 | 23潞脜麓掳     | -1     | 2010-06-19 22:16:36 |
    | 24 | 24    |           23 | 24潞脜麓掳     | 0      | 2010-06-19 22:16:48 |
    +----+-------+--------------+------------+--------+---------------------+
    24 rows in set (0.00 sec)
      

  11.   

    这是MYSQL 的命令显示表记录。
      

  12.   

    命令行下,set names 'gbk'
    然后再select呢?
      

  13.   

    在cmd下,经过set names 'gbk' 后
    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.C:\Documents and Settings\Administrator>d:D:\>cd mysqlD:\MySQL>cd binD:\MySQL\bin>mysql -h 127.0.0.1 -u root -p
    Enter password: ******
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 14
    Server version: 5.0.41-community-nt MySQL Community Edition (GPL)Type 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> use makerdb;
    Database changed
    mysql> set names gbk;
    Query OK, 0 rows affected (0.00 sec)mysql> select * from telbox;
    +----+-------+--------------+-------+--------+---------------------+
    | ID | sLIne | ChannelIndex | sName | CanUse | SysDate             |
    +----+-------+--------------+-------+--------+---------------------+
    |  1 | 1     |            0 | 1??   | -1     | 2010-06-15 21:48:27 |
    |  2 | 2     |            1 | 2??   | -1     | 2010-06-15 21:48:39 |
    |  3 | 3     |            2 | 3??   | -1     | 2010-06-15 21:50:08 |
    |  4 | 4     |            3 | 4??   | -1     | 2010-06-16 02:04:26 |
    |  5 | 5     |            4 | 5??   | -1     | 2010-06-19 22:11:40 |
    |  6 | 6     |            5 | 6??   | -1     | 2010-06-19 22:11:59 |
    |  7 | 7     |            6 | 7??   | -1     | 2010-06-19 22:12:13 |
    |  8 | 8     |            7 | 8??   | -1     | 2010-06-19 22:12:23 |
    |  9 | 9     |            8 | 9??   | -1     | 2010-06-19 22:12:40 |
    | 10 | 10    |            9 | 10??  | -1     | 2010-06-19 22:13:54 |
    | 11 | 11    |           10 | 11??  | -1     | 2010-06-19 22:14:02 |
    | 12 | 12    |           11 | 12??  | -1     | 2010-06-19 22:14:11 |
    | 13 | 13    |           12 | 13??  | -1     | 2010-06-19 22:14:19 |
    | 14 | 14    |           13 | 14??  | -1     | 2010-06-19 22:14:26 |
    | 15 | 15    |           14 | 15??  | -1     | 2010-06-19 22:14:34 |
    | 16 | 16    |           15 | 16??  | -1     | 2010-06-19 22:14:42 |
    | 17 | 17    |           16 | 17??  | -1     | 2010-06-19 22:14:52 |
    | 18 | 18    |           17 | 18??  | -1     | 2010-06-19 22:15:03 |
    | 19 | 19    |           18 | 19??  | -1     | 2010-06-19 22:15:13 |
    | 20 | 20    |           19 | 20??  | -1     | 2010-06-19 22:15:31 |
    | 21 | 21    |           20 | 21??  | -1     | 2010-06-19 22:16:15 |
    | 22 | 22    |           21 | 22??  | -1     | 2010-06-19 22:16:27 |
    | 23 | 23    |           22 | 23??  | -1     | 2010-06-19 22:16:36 |
    | 24 | 24    |           23 | 24??  | 0      | 2010-06-19 22:16:48 |
    +----+-------+--------------+-------+--------+---------------------+
    24 rows in set (0.00 sec)仍然乱码。
      

  14.   

    我现在说说我的操作过程:
    1。在mysql 2010 manager 管理器中执行脚本如下
    #
    # Data for the `TelBox` table  (LIMIT 0,500)
    #INSERT INTO `TelBox` (`ID`, `sLIne`, `ChannelIndex`, `sName`, `CanUse`, `SysDate`) VALUES 
      (1,'1',0,'1号窗','-1','2010-06-15 21:48:27'),
      (2,'2',1,'2号窗','-1','2010-06-15 21:48:39'),
      (3,'3',2,'3号窗','-1','2010-06-15 21:50:08'),
      (4,'4',3,'4号窗','-1','2010-06-16 02:04:26'),
      (5,'5',4,'5号窗','-1','2010-06-19 22:11:40'),
      (6,'6',5,'6号窗','-1','2010-06-19 22:11:59'),
      (7,'7',6,'7号窗','-1','2010-06-19 22:12:13'),
      (8,'8',7,'8号窗','-1','2010-06-19 22:12:23'),
      (9,'9',8,'9号窗','-1','2010-06-19 22:12:40'),
      (10,'10',9,'10号窗','-1','2010-06-19 22:13:54'),
      (11,'11',10,'11号窗','-1','2010-06-19 22:14:02'),
      (12,'12',11,'12号窗','-1','2010-06-19 22:14:11'),
      (13,'13',12,'13号窗','-1','2010-06-19 22:14:19'),
      (14,'14',13,'14号窗','-1','2010-06-19 22:14:26'),
      (15,'15',14,'15号窗','-1','2010-06-19 22:14:34'),
      (16,'16',15,'16号窗','-1','2010-06-19 22:14:42'),
      (17,'17',16,'17号窗','-1','2010-06-19 22:14:52'),
      (18,'18',17,'18号窗','-1','2010-06-19 22:15:03'),
      (19,'19',18,'19号窗','-1','2010-06-19 22:15:13'),
      (20,'20',19,'20号窗','-1','2010-06-19 22:15:31'),
      (21,'21',20,'21号窗','-1','2010-06-19 22:16:15'),
      (22,'22',21,'22号窗','-1','2010-06-19 22:16:27'),
      (23,'23',22,'23号窗','-1','2010-06-19 22:16:36'),
      (24,'24',23,'24号窗','0','2010-06-19 22:16:48');COMMIT;2.执行完毕后,再双击打开此表,结果乱码。
      

  15.   

    这个脚本是通过EMS sql manager 2005导出的,导出时
    字符集是
        CHARACTER SET 'utf8'
        COLLATE 'utf8_general_ci';
    那在 EMS sql manager 2010 导入时,我没有做改变,但是结果却乱码了。不知什么原因。
      

  16.   

    非常遗憾的通知你,你的表中现在存放的根本不是UTF8编码的字符串!
      

  17.   

    准确的说,是UTF8编码格式下的其它字符串,并不是你所期望的字符的,因为当你做导入的时候估计是字符集设置没有调整,MYSQL以另外一种字符集将你的字符串转换为了“UTF8”