在使用phpMyAdmin-2.6.0以上版本进行数据库管理操作时,页面上显示的中文为乱 码。更改页面的语言设置和连接校对都没有作用,依然显示乱码。

在MySQL-4.0以上和phpMyAdmin-2.6.0以上版本组合中,会出现以上问题;在MySQL -3.x和任意版本phpMyAdmin,或者phpMyAdmin-2.6.0一下(含2.6.0)和任意版本 MySQL不会出现上述问题。

造成以上问题的原因在于,数据库存储时的字符集,和phpMyAdmin认为的数据库字 符集,以及页面显示的字符编码没有对应到正确的值。

例如:在prima中,数据库内容的字符集为gb2312,数据库字符集是默认的 latin1,这样的数据库内容在小于等于phpMyAdmin- 2.6.0上显示没有问题,但是 在phpMyAdmin-2.6.0以上版本,默认数据库字符集都是utf-8,这时就产生了上述 问题。

所以,解决问题的关键,是把这几个值都设置成相应的正确的值。

  1. 问题解决:

为了便于描述,这里拿prima来作为示例。当用户自己升级了phpMyAdmin到2.6.0以 上版本之后,登录之后发现中文都变成了乱码,但是,这时站点页面上的显示是正 常的。这是,只需要改phpMyAdmin文件中的两处,即可解决。

  1. 在libararies/select_lang.lib.php文件中,找到$mysql_charset_map的赋值 段,将其中的’gb2312’ => ‘gb2312’改为’gb2312’ => ’latin1’;
  2. 在libararies/select_lang.lib.php文件中,找到$available_languages赋值 段,将’zh- gb2312’ => array(‘zh|chinese simplified’, ‘chinese_simplified-gb2312’, ‘zh’)改为’zh-gb2312-utf-8’ => array(‘zh|chinese simplified’, ‘chinese_simplified-gb2312’, ‘zh’)

修改之后,保存文件,这时登录phpMyAdmin,语言选择的时候,选择Chinese simplified (zh-gb2312-utf-8),然后在查看数据库,这时就正常了。

  1. 说明:

原则上,只需要做以上修改步骤中的第一步就可以解决问题。因为已经确定了正确 的内容字符集和数据库字符集的对应关系。phpMyAdmin中,数据库字符集是和语言 选择相关联的,所以这时只要选择Chinese simplified (zh-gb2312)就可以了。但 是,由于phpMyAdmin的设计,在页面上并不能显示出非utf-8的语言字符集选项, 所以,需要对$ available_languages进行修改。将zh-gb2312后边加上utf-8使页 面能显示出这个选项,需要使用时,选择Chinese simplified (zh-gb2312-utf- 8)。经测试,修改之后,用phpMyAdmin查看和修改数据库都没有问题,页面使用 gb2312字符编码。

  1. 结论:

以上只是通过prima来说明问题,其他情况可以参照以上方法解决,无非是数据库 字符集和页面显示字符集的设定。