在phpMyAdmin2.6以上版本因为支持多语言集,弄得我们使用phpMyAdmin管理数据库的时候,查询出来的中文都是乱码,但是在我们的PHP程序调用时却没有这些问题。
看来是phpMyAdmin2.6的配置有问题了,为了解决这个问题,我上google上搜索了相关资料,这类的问题很多,但没一个可以解决的,真是没办法,看来只有自己动手解决了。
。。。由于查找源代码过程非常烦琐,略
最终花了半天的时间,总算找到了一个比较折衷的方法来解决。
去phpMyAdmin2.6的根目录下,打开以下这个文件:
libraries/select_lang.lib.php
1、找到有"zh-gb2312"的那一行,把'zh-gb2312' 改成 'zh-gb2312-utf-8'
为什么这样加?那是因为服务器会把没有"-utf-8"的语言过滤掉,在libraries/database_interface.lib.php 第168行,根据英文说:“为了防止混淆”,:<
或者如果不把'zh-gb2312' 改成 'zh-gb2312-utf-8',可以去掉过滤吧。把那个if去掉就OK了。
2、找到"$mysql_charset_map = array("那一行
把'gb2312' => 'gb2312',
改成 'gb2312' => 'latin1',
保存,OK,在进入phpMyAdmin管理,选择语言chinese simplified(zh-gb2312-utf-8)
再看看你的那些中文数据。
所以说,我的这个解决办法就只是修改libraries/select_lang.lib.php这一个文件里的两个字就行,比较方便快捷,哈哈。
--------------------------------------------------------------------------
以上是原作者的内容
我反查了
select_lang.lib.php
if (!isset($cfg['AllowAnywhereRecoding']) &line;&line; !$cfg['AllowAnywhereRecoding']) {
$available_language_files = $available_languages;
$available_languages = array();
foreach ($available_language_files AS $tmp_lang => $tmp_lang_data) {
if (substr($tmp_lang, -5) != 'utf-8') {
$available_languages[$tmp_lang] = $tmp_lang_data;
}
} // end while
unset($tmp_lang, $tmp_lang_data, $available_language_files);
} // end if
phpmyadmin把没有utf-8的所有编辑都过滤了