如何设置 my.ini 可以设置客户端的默认字符集呢?我总是不成功?
-----------------------------
服务器端设置,起作用了,如下:
# The MySQL server
[mysqld]
default-character-set=utf8但是客户端的设置总不起作用,如下设置
# The following options will be passed to all MySQL clients
[client]
default-character-set=gbk我的目的是,设置服务器端为 utf 存贮,在客户端为 gbk,
但是按以下设置后,重启mysql服务,然后登录mysql命令行,
mysql -uroot -p123456
然后 show variables like 'char%';显示如下:
mysql> show variables like 'char%';
+--------------------------+------------------------------------+
| Variable_name            | Value                              |
+--------------------------+------------------------------------+
| character_set_client     | latin1                             |
| character_set_connection | latin1                             |
| character_set_database   | utf8                               |
| character_set_filesystem | binary                             |
| character_set_results    | latin1                             |
| character_set_server     | utf8                               |
| character_set_system     | utf8                               |
| character_sets_dir       | E:\xampplite\mysql\share\charsets\ |
+--------------------------+------------------------------------+
8 rows in set (0.00 sec)
这说明,服务器端设置生效了,但是客户端的设置没有生效呀?(我本来设置成gbk,但还是latin1)
我不知我错在哪里,我上网查了,就是这样设置呀,我错了吗?

解决方案 »

  1.   

    这个问题问得不错。不要管这个配置是否正确 ,光一个client 字符集配置起来没有什么作用。
    关键是client, connection, result字符集要一块儿修改才有用。
    所以,使用在获取连接后set names gbk才是你想要的。
      

  2.   


    我也有相同的问题,你指的一起改是否只能用set names呢?
    那配置文件里的那些设置有什么用呢?
    每次进去都要打一次set names挺烦的,在mysql后面加参数也比较麻烦
    难道没有其他方法了吗?
      

  3.   

    mysql -u test -p --default-character-set=gbk这不是很常见的吗?没觉得多打几个字符会让人很难受。还会让你多记住几件事。
      

  4.   

    另外,我严重怀疑你本机的mysql的配置文件my.ini并不在下述路径上:写了一篇总结:再谈mysql的配置文件my.ini or my.cnf
    http://hi.baidu.com/hexiong/blog/item/e860e5dd9b0d3ae376c6381a.html
      

  5.   

    我的my.ini应该是生效的,因为服务器端设置是生效的呀。
      

  6.   

    你的my.ini或my.cnf文件在哪个位置?
    你的服务器端是安装版本吗?还是手动配置版本?
      

  7.   

    我的不是安装版,我装的是 xampp 集成套件,
    我找到原因了,是路径不认。是这样,我将 my.ini 放在与mysql.exe相同的路径下,即
    e:\xampp\mysql\bin\my.ini
    这样,启动mysql服务时,能够识别这个路径,所以
    [mysqld]
    default-character-set=utf8
    起作用。但是我运行命令行时,不认这个路径,但是在加上路径这样就可以了。
    mysql --defaults-file="e:\xampp\mysql\bin\my.ini" -uroot -p
    这样的话,
    [client]
    default-character-set=gbk
    就起作用了,所以应该是路径的原因。造成我的困惑的主要原因是。
    同一个my.ini,启动mysql服务时,可以识别,但是运行命令行时,却不能识别,这是令我一直没有明白的原因。
      

  8.   

    服务能识别?主要是因为那个服务里头指定了--defaults-file参数吧你运行services.msc,找到服务,看看它的属性里头,是不是有这个启动参数?
      

  9.   

    我是在 xampp 控制面板中,启动的服务。
    这个就不知道 xampp 如何控制的了。呵呵。
    看来用集成套件不是好办法。
      

  10.   

    反正我的两个都用GBK,,,,成功了!!!!!!!!!!!!
      

  11.   

    set names gbk才是你想要的