数据库建了两个实例,对应两个数据库
每个实例中运行
mysql> show variables like 'collation_%';
+----------------------+----------------+
| 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> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | gbk                        | 
| character_set_connection | gbk                        | 
| character_set_database   | gbk                        | 
| character_set_filesystem | binary                     | 
| character_set_results    | gbk                        | 
| character_set_server     | gbk                        | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
问题:
1.在客户端运行中还是有乱码,客户端在连接别人的服务器是正常的中文显示,客户端没有问题.我的问题是出在哪里,我用的navicat for mysql,用数据传输直接传送的数据库.原数据库是gbk字符集.
2.网页上调用数据库,中文名字的也是乱码,已经设置了gbk读取

解决方案 »

  1.   

    set names 'gbk'; 
    在客户端运行然后再进行查询。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    my.ini[mysql]default-character-set=gbk
      

  3.   

    show variables like 'char%'
    set names 'gbk';
      

  4.   

    我最近hibernate连接mysql时也遇到了这样的问题,不过我用的是utf8
    show variables like 'char_%';
    show variables like 'co_%';
    show create table users; 
    show full columns from users;
    我上面的的几种结果都显示是utf8或者'utf8_general_ci;但用select查询中文显示还是乱码解决办法是在hibernate.cfg.xml中设置
    <property name="connection.useUnicode">true</property>
    <property name="connection.characterEncoding">utf8</property>

    当然你也可以在url连接处设置;不过上面的方法对于已经传入的数据无效
      

  5.   

    以下是my.conf内容,请大家看看那里有问题
    [client]
    #password = your_password
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    default-character-set=gbk# Here follows entries for some specific programs# The MySQL server
    [mysqld]
    port = 3306
    socket = /var/lib/mysql/mysql.sock
    skip-locking
    key_buffer = 16M
    max_allowed_packet = 1M
    table_cache = 64
    sort_buffer_size = 512K
    net_buffer_length = 8K
    read_buffer_size = 256K
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 8M
    #skip-innodb
    default-character-set=gbk
    character-set-server=gbk
    init_connect=set names binary
    #skip-character-set-client-handshake
    skip-name-resolve# Don't listen on a TCP/IP port at all. This can be a security enhancement,
    # if all processes that need to connect to mysqld run on the same host.
    # All interaction with mysqld must be made via Unix sockets or named pipes.
    # Note that using this option without enabling named pipes on Windows
    # (via the "enable-named-pipe" option) will render mysqld useless!

    #skip-networking# Disable Federated by default
    skip-federated# Replication Master Server (default)
    # binary logging is required for replication
    log-bin=mysql-bin
    #binlog_format=mixed# required unique id between 1 and 2^32 - 1
    # defaults to 1 if master-host is not set
    # but will not function as a master if omitted
    #server-id = 1# Replication Slave (comment out master section to use this)
    #
    # To configure this host as a replication slave, you can choose between
    # two methods :
    #
    # 1) Use the CHANGE MASTER TO command (fully described in our manual) -
    #    the syntax is:
    #
    #    CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
    #    MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
    #
    #    where you replace <host>, <user>, <password> by quoted strings and
    #    <port> by the master's port number (3306 by default).
    #
    #    Example:
    #
    #    CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
    #    MASTER_USER='joe', MASTER_PASSWORD='secret';
    #
    # OR
    #
    # 2) Set the variables below. However, in case you choose this method, then
    #    start replication for the first time (even unsuccessfully, for example
    #    if you mistyped the password in master-password and the slave fails to
    #    connect), the slave will create a master.info file, and any later
    #    change in this file to the variables' values below will be ignored and
    #    overridden by the content of the master.info file, unless you shutdown
    #    the slave server, delete master.info and restart the slaver server.
    #    For that reason, you may want to leave the lines below untouched
    #    (commented) and instead use CHANGE MASTER TO (see above)
    #
    # required unique id between 2 and 2^32 - 1
    # (and different from the master)
    # defaults to 2 if master-host is set
    # but will not function as a slave if omitted
    #server-id       = 2
    #
    # The replication master for this slave - required
    #master-host     =   <hostname>
    #
    # The username the slave will use for authentication when connecting
    # to the master - required
    #master-user     =   <username>
    #
    # The password the slave will authenticate with when connecting to
    # the master - required
    #master-password =   <password>
    #
    # The port the master is listening on.
    # optional - defaults to 3306
    #master-port     =  <port>
    #
    # binary logging - not required for slaves, but recommended
    #log-bin=mysql-bin# Point the following paths to different dedicated disks
    #tmpdir = /tmp/
    #log-update  = /path-to-dedicated-directory/hostname# Uncomment the following if you are using BDB tables
    #bdb_cache_size = 4M
    #bdb_max_lock = 10000# Uncomment the following if you are using InnoDB tables
    #innodb_data_home_dir = /var/lib/mysql/
    #innodb_data_file_path = ibdata1:10M:autoextend
    #innodb_log_group_home_dir = /var/lib/mysql/
    #innodb_log_arch_dir = /var/lib/mysql/
    # You can set .._buffer_pool_size up to 50 - 80 %
    # of RAM but beware of setting memory usage too high
    #innodb_buffer_pool_size = 16M
    #innodb_additional_mem_pool_size = 2M
    # Set .._log_file_size to 25 % of buffer pool size
    #innodb_log_file_size = 5M
    #innodb_log_buffer_size = 8M
    #innodb_flush_log_at_trx_commit = 1
    #innodb_lock_wait_timeout = 50[mysqld_multi]
     mysqld          = /usr/bin/mysqld_safe
     mysqladmin      = /usr/bin/mysqladmin
     user            = root
     password        = password[mysqld1]
     port            = 33306
    socket          = /var/lib/mysql/mysql_33306.sock
    pid-file        = /var/run/mysqld/mysql.pid
    datadir         = /database
     log-bin         = /database/mysql-bin.log
     log             = /database/centos_33306.log
    skip-name-resolve
    server-id       = 1[mysqld2]
    port            = 33307
     socket          = /var/lib/mysql/mysql_33307.sock
     pid-file        = /var/run/mysqld/mysql_3307.pid
     #basedir        = /usr/local/mysql
     datadir         = /gamedata
     log-bin         = /gamedata/mysql-bin.log
     log             = /gamedata/centos_33307.log
    skip-name-resolve server-id       = 2[mysqldump]
    quick
    max_allowed_packet = 16M[mysql]
    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates
    default-character-set=gbk
    [isamchk]
    key_buffer = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M[myisamchk]
    key_buffer = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M[mysqlhotcopy]
    interactive-timeout