本帖最后由 long405581649 于 2013-06-08 18:47:22 编辑

解决方案 »

  1.   

    mysql> select version()
    +---------------------+
    | version()           |
    +---------------------+
    | 5.0.45-community-nt |
    +---------------------+
    1 row in set (0.04 sec)
      

  2.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  3.   

    show variables like 'char%'; 
    show create table xxx;
      

  4.   

    MYSQL 的 UTF8默认设置
    你看一下是否和你的一致
      

  5.   


    这些都专门设置过
    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       | C:\Program Files (x86)\MySQL\MySQL Server 5.0\share
    \charsets\ |
    +--------------------------+----------------------------------------------------
    -----------+
    8 rows in set (0.00 sec)mysql> show create table history20132;
    +--------------+----------------------------------------------------------------
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    +
    | Table        | Create Table|
    +--------------+----------------------------------------------------------------
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    +
    | history20132 | CREATE TABLE `history20132` (
      `businessid` varchar(50) NOT NULL default '',
      `property` varchar(50) NOT NULL default '',
      `value` varchar(50) default NULL,
      `date` datetime NOT NULL default '0000-00-00 00:00:00',
      PRIMARY KEY  (`businessid`,`property`,`date`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +--------------+----------------------------------------------------------------
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    --------------------------------------------------------------------------------
    +
    1 row in set (0.03 sec)
      

  6.   

    初始建表就是UTF8?没有插入记录后再修改字符集?我用命令访问mysql,为什么也非要set names uft8; 一下呢?
    简要说明一样,在MYSQL命令行下?
      

  7.   

    mysql> show full fields from history20132;
    +------------+-------------+-----------------+------+-----+---------------------
    +-------+---------------------------------+---------+
    | Field      | Type        | Collation       | Null | Key | Default
    | Extra | Privileges                      | Comment |
    +------------+-------------+-----------------+------+-----+---------------------
    +-------+---------------------------------+---------+
    | businessid | varchar(50) | utf8_general_ci | NO   | PRI |
    |       | select,insert,update,references |         |
    | property   | varchar(50) | utf8_general_ci | NO   | PRI |
    |       | select,insert,update,references |         |
    | value      | varchar(50) | utf8_general_ci | YES  |     | NULL
    |       | select,insert,update,references |         |
    | date       | datetime    | NULL            | NO   | PRI | 0000-00-00 00:00:00
    |       | select,insert,update,references |         |
    +------------+-------------+-----------------+------+-----+---------------------
    +-------+---------------------------------+---------+
    4 rows in set (0.01 sec)
      

  8.   

    String createSql = "CREATE TABLE `"+table+"` ("+
    "`businessid` varchar(50) NOT NULL default '',"+
    "`property` varchar(50) NOT NULL default '',"+
    "`value` varchar(50) default NULL,"+
    "`date` datetime NOT NULL default '0000-00-00 00:00:00',"+
    "PRIMARY KEY  (`businessid`,`property`,`date`)"+
    ") ENGINE=InnoDB DEFAULT CHARSET=utf8";创建的时候就是utf8,创建后没有修改过。“我用命令访问mysql,为什么也非要set names uft8; 一下呢?”我的意思是,我用cmd,进入DOS下,mysql -u -p   进入mysql命令行下,我在查询的时候,如果查询条件如果是中文,必须先set names gbk 或 set names utf8, 不然是没有数据的,而且从 show variables like '%char%';可以看出,我的client、connection、result、server的字符集都是utf8, 我认为是可以的set name 'gbk'; 
    这条命令的作用是同时修改 character_set_client,character_set_connection,character_set_results所以不用这条命令也是可以的,但事实上不行,所以有此一问