解決phpmyadmin 亂碼,支持gb2312和utf-8
群裡很多PHP愛好者一直受phpmyadmin的亂碼問題困擾.我自從有了mysql-front後,我就很少使用phpmyadmin了.但每次連接遠程主機,就比較慢.造成操作不便.今天有點時間,就下了最新的版本來研究.
首先說明我的數據庫使用情況:
phpmyadmin 版本2.7.0-pl1
(如果你使用其它版本,可能會有所不同,請對照修改或者到 這裡下載 phpmyadmin 2.7.0-pl1)
mysql版本MySQL 5.0.11-beta-nt
我在以前是使用GB2312編碼方式,直接寫入數據庫的,字符集是mysql默認的latin1
PHP5以後我寫的程序都改用UTF-8編碼方式了,也是直接讀寫的.所以字符集也應試是mysql默認的latin1
我在用PHP操作數據時 沒有 使用過以下語句:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
好,開始吧.
把下載的ZIP包解壓到www目錄後打開文件夾...好久不見,配置文件名都從config.inc.php改成了config.default.php .
我修改了以下代碼:
31行
$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin-2.7.0-pl1/';
45行
$cfg['blowfish_secret'] = 'this';
71行
$cfg['Servers'][$i]['auth_type'] = 'cookie'; // Authentication method (config, http or cookie based)?
接著,浏覽器打開http://localhost/phpMyAdmin-2.7.0-pl1/ 使用root登錄.language是默認的chinese simplified(zh-utf-8)
浏覽一個UTF-8的表.亂碼.
查看了html源代碼,charset=utf-8
查看他的語言選擇文件libraries/select_lang.lib.php
263行 'utf-8' => 'utf8',
我用的是默認的latin1 所以,這裡應試改成latin1.改好保存,刷新.成功
轉到一個以前用GB2312編碼錄入的庫.是亂碼.
退出.以chinese simplified(zh-gb2312)登錄.到處看.亂碼.
和上面一樣找到libraries/select_lang.lib.php
250行 'gb2312' => 'gb2312',
把gb2312改為latin1.保存,刷新.卻不行.還是一樣.
很納悶.查看了html源代碼,charset還是utf-8.不對呀,應試是GB2312才正常.
無意中在首頁的language下拉菜單中,發現沒有登錄時的chinese simplified(zh-gb2312)這一欄.(下圖)
不解,仔細一對,列表項都是utf-8結束的.問題應試在這.
找libraries/select_lang.lib.php裡對應的zh-gb2312,在它後面加上一個"-utf-8"
這回有了.查看了html源代碼,charset是GB2312了.
如何在兩種語言轉換呢?
我試著回到UTF-8編碼的表.沒錯,是亂碼.
轉到首頁.language下拉菜單中選擇zh-utf-8.再看看,OK了.
試著修改,添加新數據.都沒再有亂碼了.
結束:我的思路是以html的charset對照mysql的charset.
最後提醒:
如果你操作表時使用過以下語句:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
那麼你修改時libraries/select_lang.lib.php可能會有所不同.多試試幾種方式.會有不一樣的收獲.
轉載請標明出處為www.phpv.net