我的mysql数据库昨天的所有信息都还好的呢,什么操作也没干。今天汉字就成乱码了,这是什么原因阿?并且字符集高手们快帮帮忙吧。网上说的改正的信息我也改过了阿。
[mysqld]
#设定默认字符集为gbk
default-character-set=gbk
#设定连接mysql数据库时使用gbk,以让mysql数据库为gbk运行
init_connect='SET NAMES gbk'
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
lower_case_table_names=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
#终端字符集,告诉Server客户端提交的SQL语句的编码格式 
default-character-set=gbk
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| 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.   

    也许是吧,我用的是native我也修改了字符集。就是不可以。
      

  2.   

    你问题非常常见,你需要设定和MySQL 连接语言集是什么。如下面代码,要是没有
    mysql_query('SET @@character_set_results = "'.$program_char.'"',$conn); 显示中文字也是乱码。
    $conn = mysql_connect("127.0.0.1", "test", "0000") or
            die("Could not connect: " . mysql_error());$program_char = "utf8";mysql_query('SET @@character_set_results = "'.$program_char.'"',$conn);
        
    mysql_select_db("test");

    $charset = mysql_client_encoding($conn);printf ("current character set is %s \n", $charset);