首頁 >資料庫 >php我的管理者 >phpmyadmin匯出sql檔案亂碼怎麼辦

phpmyadmin匯出sql檔案亂碼怎麼辦

藏色散人
藏色散人原創
2020-04-01 09:24:562679瀏覽

phpmyadmin匯出sql檔案亂碼怎麼辦

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn