当MySQL5服务器端指定字符集时,
客户端显示汉字乱码的解决的方法:
连接后,执行“set names ‘gb2312’”(客户端指定字符集)。
---------------------------------------
有没有其他方法可以让mysql5自动指定字符集,而不是每次连接后都得执行“set names ‘xxx’”?

解决方案 »

  1.   

    这是EMS 2005第一次查询的结果
    Variable_name                   Value
    character_set_client            latin1
    character_set_connection        latin1
    character_set_database          gb2312
    character_set_filesystem        binary
    character_set_results           latin1
    character_set_server            gb2312
    character_set_system            utf8
    character_sets_dir              D:\Program Files\MySQL\MySQL Server 5.0\share\charsets\
    collation_connection            latin1_swedish_ci
    collation_database              gb2312_chinese_ci
    collation_server                gb2312_chinese_ci
    completion_type                 0
    concurrent_insert               1
    connect_timeout                 5
    --------------------------
    执行“set   names   ‘gb2312’” 后 查询的结果
    Variable_name            Value
    character_set_client    gb2312
    character_set_connection   gb2312
    character_set_database     gb2312
    character_set_filesystem   binary
    character_set_results      gb2312
    character_set_server       gb2312
    character_set_system       utf8
    character_sets_dir         D:\Program Files\MySQL\MySQL Server 5.0\share\charsets\
    collation_connection       gb2312_chinese_ci
    collation_database         gb2312_chinese_ci
    collation_server           gb2312_chinese_ci
    completion_type            0
    concurrent_insert          1
    connect_timeout            5
    -------------------------------------------
    这些都正常么?
    这是my.ini文件中配置
    [client]port=3307[mysql]default-character-set=gb2312
    # SERVER SECTION
    # ----------------------------------------------------------------------
    #
    # The following options will be read by the MySQL Server. Make sure that
    # you have installed the server correctly (see above) so it reads this 
    # file.
    #
    [mysqld]# The TCP/IP Port the MySQL Server will listen on
    port=3307
    #Path to installation directory. All paths are usually resolved relative to this.
    basedir="D:/Program Files/MySQL/MySQL Server 5.0/"#Path to the database root
    datadir="D:/Program Files/MySQL/MySQL Server 5.0/Data/"# The default character set that will be used when a new schema or table is
    # created and no character set is defined
    default-character-set=gb2312
      

  2.   

    如果上面的是正常的现象,那怎么让mysql5绑定character_set_client为gb2312我用的是delphi中的dbexpress控件连mysql5,如果每个查询控件都执行连接后执行set   names   ‘gb2312’
    才能用,这是做不到的,db控件不可能用起来。因为连接控件会自动创建新的连接,而根本不理会你执行过"set   names   ‘gb2312’"的已有的连接。
      

  3.   

    character_set_client                         latin1
    character_set_connection                 latin1
    character_set_database                     gb2312
    character_set_filesystem                 binary
    character_set_results                       latin1
    character_set_server                         gb2312
    character_set_system                         utf8
    character_sets_dir                             D:\Program   Files\MySQL\MySQL   Server   5.0\share\charsets\
    collation_connection                         latin1_swedish_ci
    collation_database                             gb2312_chinese_ci
    collation_server                                 gb2312_chinese_ci 
    这些值得是一致的。你看看你的都乱成什么样子了 ?
      

  4.   

    怎么解决?用mysql的配置程序配置了好多次都一样。
    my.ini跟你blog上一致
    [mysql] default-character-set=gb2312 [mysqld] default-character-set=gb2312
      

  5.   

    只要按照我写的配置,然后重新启动MYSQL服务器就可以了
    怎么会都是一样呢?
      

  6.   

    ....无念,是我不会重新启动MYSQL服务器么?
    最后问一下,客户段和mysql5的通讯机制。客户段连接时是发什么信息给mysql5,mysql5设定这个连接的character_set_client 为latin1 的。(当然我知道后面执行“set names 'xxx'”能改变连接设定)
      

  7.   

    配置文件里写
    [client]  default-character-set=gb2312  
    改变客户端连接的编码类型[mysqld]  default-character-set=gb2312 
    改变SERVER端的编码类型而不是你写的那样
      

  8.   

    用mysql自带的客户端MySQL Command Line Client,,查询显示
    Variable_name                 Value 
    character_set_client          gb2312 
    character_set_connection      gb2312 
    character_set_database        gb2312 
    character_set_filesystem      binary 
    character_set_results         gb2312 
    character_set_server          gb2312 
    character_set_system          utf8 
    character_sets_dir            D:\Program   Files\MySQL\MySQL   Server   5.0\share\charsets\ 
    collation_connection          gb2312_chinese_ci 
    collation_database            gb2312_chinese_ci 
    collation_server              gb2312_chinese_ci 
    completion_type               0 
    concurrent_insert             1 
    connect_timeout               5 
    很正常,跟版主说的一样。
    我想问客户段和mysql5的通讯机制。客户段连接时是发什么信息给mysql5,mysql5设定这个连接的character_set_client   为latin1   的。
    可另开帖给分
      

  9.   

    那你为什么不把LATIN1编码改了?
      

  10.   

    在delphi的姊妹版C++ builder下找到解决方法。
      

  11.   

    http://topic.csdn.net/u/20070810/14/1963df50-0e5d-46b6-9f3a-f137c735a7d0.htmlhttp://blog.csdn.net/6rl/archive/2007/12/25/1967274.aspx