在my.cnf分别设定默认编码
[code=BatchFile]
[mysql.server]
default-character-set=gb2312 [mysqld_safe]
default-character-set=gb2312 [client]
default-character-set=gb2312 [/code]

解决方案 »

  1.   

    应该是你的设置不对或不全再看看!实际上用mysql_query("set names 'gb2312';")就足以解决字符集问题,没必要管那么多
      

  2.   


    我没有cnf的配置文件。版本是5.0,windows 下的。只有一个 ini配置文件。我需要自己建一个cnf文件吗?
    应该和my.ini 作用一样吧。 我配置文件里没有[mysqld_safe],我加了这一行,也不管用。关键是show variables 显示,所有的字符集变量都改过来了,但是,程序访问和控制台访问,好像不是同一个配置文件啊。
      

  3.   

    我也知道肯定是不全。但是还能在哪里设置呢。关键是要改变哪个字符集变量才能起作用呢?show variables 可以看到,能改的都已经改过来了
      

  4.   

    直接用set names gbk;就可以了,如果要在MySQL系统上设置,你可以把My.ini文件里的默认字符集全部改为你所要的字符集名称,最好在表里面也设置统一的编码,这样访问就应该没问题了
      

  5.   

    这是我程序取出来的字符集变量:(可以看到,有的改过来了,有的没改。恰恰是影响乱码的三个没改,还是latin1 晕),为啥呢?---------- php command ----------
    Array
    (
        [0] => character_set_client
        [1] => latin1
    )
    Array
    (
        [0] => character_set_connection
        [1] => latin1
    )
    Array
    (
        [0] => character_set_database
        [1] => gb2312
    )
    Array
    (
        [0] => character_set_filesystem
        [1] => binary
    )
    Array
    (
        [0] => character_set_results
        [1] => latin1
    )
    Array
    (
        [0] => character_set_server
        [1] => gb2312
    )
    Array
    (
        [0] => character_set_system
        [1] => utf8
    )
      

  6.   

    你直接改MySQL根目录下的My.ini,如果还不行,你把这个my.ini(修改后的)复制到WINDOWS目录下,删除掉原先在MySQL根目录的My.ini,这个问题可能是你改的my.ini不是MySQL服务系统所加载的my.ini
      

  7.   

    谢谢。我删除mysql目录下的My.ini后,mysql就启动不起来了。我查看了一下服务运行指定的文件path,就是安装目录下的my.ini,不是windows目录下的。我把windows目录下的删除了,保留安装目录下的my.ini结果一样,没有改变。(我试过了,这个安装目录下的my.ini的设置是影响控制台字符集变量的,说明加载的就是这个ini。但是它只影响控制台,不影响程序--也不是不影响,影响一部分,汗。)
      

  8.   

    查询/修改/添加数据前执行set names 'gb2312'