具体问题如标题所示。mysql版本为5.5.
在mysql控制台对数据库操作,中文显示正常。通过navicat,netbeans,以及mysql workbench上对数据库操作,中文显示都是正常的。
在..\MySQL\MySQL Server 5.5路径下的my-template.ini中的[MySql]和[Mysqld]里面都已经添加了default-character-set=gb2312。在php代码里面也加入了mysql_query("set names 'gb2312'");也在使用数据库时输入了alter   database   charset   =   gb2312;
但是,最后,在页面上显示的中文还是乱码。WHY??请高人指点。不胜感激!

解决方案 »

  1.   

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     还有你建的那个数据库编码也要相应的改
      

  2.   


    这是我建表的sql:
    CREATE TABLE wishes(
     id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
     wisher_id INT NOT NULL,
     description CHAR(255) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL,
     due_date DATE,
     FOREIGN KEY (wisher_id) REFERENCES wishers(id)
    );另外<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />也是加在了html文件中的。除了gb2312外,gbk和utf8都用过了。都不行。
      

  3.   

    navicat看下你那张表的DDL 看看是不是这个表的编码设置成了UTF-8 如果是这样你查询的时候指定gb2312岂不是乱码了 不要用工具操作 进入命令行操作看看是不是乱码
      

  4.   


    mysql> select * from wishes;
    +----+-----------+-------------+------------+
    | id | wisher_id | description | due_date   |
    +----+-----------+-------------+------------+
    |  1 |         1 | Sausage     | 2008-04-01 |
    |  2 |         1 | Icecream    | NULL       |
    |  3 |         2 | Cheese      | 2008-05-01 |
    |  4 |         2 | 铚$儧        | NULL       |
    +----+-----------+-------------+------------+
    4 rows in set (0.00 sec)
    然后我更改了控制台属性字体为新宋体,结果如下:mysql> select * from wishes;
    +----+-----------+-------------+------------+
    | id | wisher_id | description | due_date   |
    +----+-----------+-------------+------------+
    |  1 |         1 | Sausage     | 2008-04-01 |
    |  2 |         1 | Icecream    | NULL       |
    |  3 |         2 | Cheese      | 2008-05-01 |
    |  4 |         2 | 铚$儧        | NULL       |
    +----+-----------+-------------+------------+
    4 rows in set (0.00 sec)mysql> set names gb2312;
    Query OK, 0 rows affected (0.00 sec)mysql> select * from wishes;
    +----+-----------+-------------+------------+
    | id | wisher_id | description | due_date   |
    +----+-----------+-------------+------------+
    |  1 |         1 | Sausage     | 2008-04-01 |
    |  2 |         1 | Icecream    | NULL       |
    |  3 |         2 | Cheese      | 2008-05-01 |
    |  4 |         2 | 蜡烛            | NULL       |
    +----+-----------+-------------+------------+
    4 rows in set (0.00 sec)
      

  5.   


    还有,用navicat看了一下,表的编码是gb2312.
      

  6.   

    my-template.ini应该是my.ini吧
    show creat table tbname看看
      

  7.   

    在mysql安装路径下只有my-template.ini,my-small.ini,my-medium.ini等几个类似的文件。在D:\ProgramData\MySQL\MySQL Server 5.5路径下有my.ini文件。也修改过了,然后重启mysql服务了。但还是没有用。我要哭了都
      

  8.   

    检查字符集设置。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  9.   


    我不是很懂这个字符集的东西。但是这些我基本都看过了。在安装mysql server时,我选择的默认字符集是gbk,因此,在my.ini中肯定设置的是default-character-set=gbk。在用netbeans进行php编程时,选择的默认字符集也是gbk。在php中访问数据库时,也加入了mysql_query("set names gbk");结果在网页上打开后,从数据库读出的中文还是乱码。但是静态的中文显示就是正常的。所以问题还是出在php访问数据库上。
    另外,不论是mysql控制台,还是用navicat,显示数据库中的中文都是正常的。
      

  10.   


    mysql> show variables like 'char%';
    +--------------------------+------------------
    -----+
    | 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       | D:\Program Files\
    ets\ |
    +--------------------------+------------------
      

  11.   


    通过控制台运行php代码访问同一个数据库返回的结果在控制台中中文显示也是正常的。现在就只有在浏览器中显示的中文是乱码了。
      

  12.   

    问题搞定了。
    我尝试了一下用在网页文件的php代码里对数据库进行插入操作,发现数据库中中文完全正常。
    然后我又用自己修改后的简单一些的php访问数据库的代码代替了原来的网页文件的php代码,发现中文显示居然正常了!!
    我猜测应该是原来php代码中关于网页显示的部分有问题,而不是php访问数据库出的问题。
    最后发现,在网页中显示时,绘制了一个表格,利用了htmlentities()函数,但是这个函数只输入了第一个参数,后面关于字符集设定的参数由于是可选的,就没有输入,但是这个参数默认的是ISO-8859-1 - 默认。西欧。
    可想而知,中文显示肯定会出问题。
    我把字符集参数修改为gbk,发现还是不行,会报错。然后又改成gb2312.中文显示就不再是乱码了!!再次感谢各问大侠的热心帮助哈!!