2006年11月12日

phpMyAdmin 看到的 MySQL 資料庫中文是亂碼

似乎國外的虛擬主機都有一樣的問題,雖然網站的中文是正常顯示的,但進主機商提供的 phpMyAdmin 卻總是亂碼,有時候要改資料真的挺不方便的。

  幸好在拜過 Google 大神後,找到了解決方法,也測試成功了!為了避免往後資料找不到,所以 Simon 特別把原文引用下來,希望讓自己能方便尋找!在這裡感謝 Deal13 的站長 Kevin 提供這篇造福大眾的文章。

引言:
phpMyAdmin 看到的 MySQL 資料庫中文是亂碼

我想很多人都碰到這個問題,在 DreamHost 上使用 phpMyAdmin 管理 MySQL 資料庫時看到的資料庫內容都是亂碼,或是備份再回傳之後整個網站都變成亂碼,尤其是在網站換主機商(搬家)的時後才發現這個問題最令人頭痛。

  其實不只是 DreamHost 有這個問題,只要是用 MySQL 4.1 以後的版本都有可能會碰到這個問題,跟那個主機商無關,也跟你用的架站軟體關係不大。

  詳細的原因這邊就不在解釋,有興趣的用 Google 找找不難找到,這邊提供一個「偷吃步」的解決方案,此法適用於 big5 或 utf-8 編碼的網站,任何架站軟體都通用。

詳細步驟:

1. 按這邊下載 phpMyAdmin 2.8.0-beta1

2. 解壓縮

3. 打開 phpMyAdmin280b1/config.inc.php,做下列更改:
第57行:$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL hostname or IP address 把localhost改成你的MySQL主機位置, 也就是 DB Hostname:
第72行:$cfg['Servers'][$i]['user'] = 'root'; // MySQL user 把root改成你的MySQL資料庫的使用者名稱, 也就是 DB Username:
第73行:$cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed 在''中間填入你的MySQL資料庫的密碼, 也就是 DB Password:

4. 改好後整個目錄上傳到你的網站的目錄下

5. 用你的瀏覽器連到 http://你的網址/phpMyAdmin280b1 應該就可以看到你的 MySQL 資料庫的內容顯示正常的中文而不是亂碼了。

註解:
1. 這並不是啥特別版本的phpMyAdmin, 跟原來官方版本的差別只有我把phpMyAdmin280b1/libraries/select_lang.lib.php 這個檔案改過

第353行: 'big5' => 'big5', 改成 'big5' => 'latin1',
第370行: 'utf-8' => 'utf-8', 改成 'utf-8' => 'latin1',

如果自己已經有裝phpMyAdmin的也可以自己改.

2. 注意:phpMyAdmin 本身並沒有保護機制,請用主機商控制台裡面的功能將 phpMyAdmin 的目錄用密碼保護起來,或是將 config.inc.php 裡面的密碼刪除,要用的時後再填上去

3. 此法也可解決使用 phpMyAdmin 備份後回存亂碼的問題。

4. 此法僅在 DreamHost 主機上做過測試,一切正常,歡迎使用其它主機商的朋友回報測試結果。