phpmyadmin匯出sql檔案亂碼怎麼辦?
phpMyAdmin版本是2.9.1.1
用phpMyAdmin備份資料庫,匯出來後,在本地用sqlyog還原的時候,出現如下錯誤:
Error occured at:2009-03-03 10:09:43 Line no.:11154 Error Code: 1062 - Duplicate entry '??????' for key 2
打開sql檔看了下,會員表下的會員用戶名是亂碼,全都是類似???,????的,因為現在很多程式都支援中文用戶名了,而用戶名又是唯一的,中文用戶名變成亂碼後,就出現很多相同的用戶名,而我們導入這些出現亂碼的數據時,前面已經有??????這個用戶名了,所以下面出現第二個就報錯了
如果有系統的控制權,可以用如下指令導出數據,就不會出現亂碼,還原時是正常的
mysqldump -uroot -p --default-character-set=utf8 --set-charset --skip-opt dbname > newdbname.sql
但現在只能用phpMyAdmin導出,測試了好久,發現如果phpMyAdmin的Language為"中文-chinese simplified-gb2312"時,導出來的sql檔是gb2312的,某些表裡有中文,中文為亂碼,當phpMyAdmin的Laguage為"中文-chinese simplified(也就是utf8)"時,導出來的sql文件字符集是utf8的(用Notepad 查看格式,顯示是UTF-8無BOM格式編碼),表裡的中文可以正常顯示
所以,為避免匯出來的檔案裡中文是亂碼,可以從Language下拉選單中,選擇中文-chinese simplified,然後再選擇匯出,下載回來的sql檔中的中文就可以正常顯示了。
用以下指令還原
mysql -uroot -p --default-character-set=utf8 newdbname < newdbname.sql
本來想把phpMyAdmin的預設Language修改為「中文-chinese simplified",但試過修改config.inc.php和libraries目錄下的config.default .php都沒用,沒關係了,畢竟不同人選擇資料庫的編碼都不一樣的,總是有人要重新選擇一下語言,還是讓它預設是「中文-chinese simplified-gb2312」吧!
猜測另一個解決方法是,導出的檔案編碼是gb2312,所以可以考慮將gb2312轉換為utf8.此方法試驗中。
以上是phpmyadmin匯出sql檔案亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!