使用sqlyog查看中文字段都是乱码,查看了下mysql变量:
character_set_filesystem=binary
character_set_database=latin1
character_set_server=latin1
character_set_system=utf8请问
character_set_client
character_set_connection
character_set_results
这3个变量如何设置才能正确显示中文还是有什么别的办法。
谢谢了

解决方案 »

  1.   

    set names 'gb2312';
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    数据库编码是latin1
    入库数据编码是gbk
      

  3.   

    set names 'gbk';建议花三分钟把一楼的贴子读一下
      

  4.   

    set names 'gb2312'; 
    set names 'UTF8'; 
    都试过没效果
      

  5.   

    [Quote #5楼 ACMAIN_CHM(acmain)   ]set names 'gbk';建议花三分钟把一楼的贴子读一下[/Quote]
      

  6.   

    一楼的帖子我看过了。
    还是解决不了问题
    表结构:CREATE TABLE `song` (               
                    `songid` int(1) NOT NULL default '0',     
                    `songname` varchar(100) NOT NULL,          
                    PRIMARY KEY  (`songid`)                   
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1    
     其中字段‘songname’为'latin1_swedish_ci'
    入库的编码是gbk,按理说 set names 'gbk' 应该能正确显示,但是现在还是不行
      

  7.   

    ) ENGINE=MyISAM DEFAULT CHARSET=latin1  这样的话,就不行了,你的数据是 latin1 的。set names 'latin1' 
      

  8.   


    如果你能重现当时写数据时的客户终端的编码及当时写数据时的set names '当时的编码',那这个表的数据才能正常显示处理。
      

  9.   

    在my.ini中设置
    [mysql]
    default-character-set=utf8
    [mysqld]
    default-character-set=utf8都加入这两行重启mysql 服务然后重新创建表 记得一定要重新创建
    你就会发现create table
    CREATE TABLE `forum` (
       `Id` int(11) NOT NULL AUTO_INCREMENT,
       `title` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
       `content` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
       `date` date NOT NULL DEFAULT '0000-00-00',
       `name` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
       `email` varchar(255) COLLATE utf8_bin DEFAULT '',
       PRIMARY KEY (`Id`)
     ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
    如果你的表是utf8的而个别vachar列是latin的
    mysql> show create table tb;
    +-------+-----------------------------------------------------------------------
    ---------------------------------------------------+
    | Table | Create Table
                                                       |
    +-------+-----------------------------------------------------------------------
    ---------------------------------------------------+
    | tb    | CREATE TABLE `tb` (
      `rid` int(11) DEFAULT NULL,
      `con` varchar(5) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-------+-----------------------------------------------------------------------
    ---------------------------------------------------+
    1 row in set (0.00 sec)mysql> alter table tb change con con varchar(5) character set utf8 default  null
    ;
    Query OK, 7 rows affected (0.14 sec)
    Records: 7  Duplicates: 0  Warnings: 0mysql> show create table tb;
    +-------+-----------------------------------------------------------------------
    ----------------------------------------------------------------------+
    | Table | Create Table
                                                                          |
    +-------+-----------------------------------------------------------------------
    ----------------------------------------------------------------------+
    | tb    | CREATE TABLE `tb` (
      `rid` int(11) DEFAULT NULL,
      `con` varchar(5) CHARACTER SET utf8 DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-------+-----------------------------------------------------------------------
    ----------------------------------------------------------------------+
    1 row in set (0.00 sec)
    这样避免乱码问题
      

  10.   

    很显然,你的sqlyog 中lati去显示中文当然会有问题。 这也是为什么要求创建表的时候就使用正确的字符集。
      

  11.   

    不过你可以使用mysql.exe 命令行工具来显示,应该会正常。这是因为DOS中没有这种区分。它拿到什么就显示什么。
      

  12.   

    我自己写程序测试了一下,执行set names latin1,可以正确显示数据库中的中文,页面编码为utf8
      

  13.   

    set names 'gbk';
    default_character_set=gb2312;
    set character_set_result='gb2312';
    查询结果:show variables like'character_set_%';
    安装MySQL的时候,最好将客户端字符集设置为gbk或gb2312。也可以在建表的时候设置,如:create table table_name(opt1,opt2,...) default charset=gb2312或gbk。
    还有就是服务器端collation也设为gbk或gb2312的。否则,就算你设置完.ini配置文件,客户端显示的依然是乱码。
      

  14.   

    记得做J2EE SSH的时候,在MySQL客户端显示的是中文,可是在页面显示的是乱码,而且往数据库插入数据时,用select查询的时候还是乱码。所以,最好的办法就是客户、服务器端都设置字符集为gbk或gb2312。
      

  15.   

    21楼,那已经安装好的MY sql在哪儿修改啊?“最好的办法就是客户、服务器端都设置字符集为gbk或gb2312。”在哪儿修改啊?谢谢