相信 MySQL 的編碼對很多人來說一直是個相當令人頭痛的問題,今天所要做的介紹是如何把資料庫的資料, 由 latin1 轉成 utf8。最近的案子中,我拿到了一個很久以前的 MySQL 資料庫,因為過去預設編碼為 latin1,在新的 phpMyAdmin 就無法成功轉為 utf8 的編碼。處理的過程很麻煩,但終於試了出來,以下就做為筆記,以備不時之需。
利用mysql自帶的mysqldump功能dump一下原有的 latin1 編碼的資料庫。請進入 cmd 模式,輸入以下指令:
mysqldump --user=使用者名稱 --password=密碼 --default-character-set=latin1 --skip-set-charset 資料表名稱 > 輸出檔名.sql
如此即會在所在資料夾產生 latin1 編碼的資料庫檔 (副檔名為.sql)。
接著請把 dump 出來的資料庫檔下載回去,用 emEditor(網路上可免費下載,是個支援 utf-8 的編輯器,也是我的最愛啊~)把資料庫檔打開,請選取可以正常編碼識別的文字,如 big5 來開啟檔案,再利用取代的功能,把 latin1 都取代成 utf8。
接著把該檔案中一些 big5 碼會有問題的字進行取代,如許、功、蓋、體、珮、閱、餐,取代時要特別注意,以「許」為例,找尋時要用「許\\」,取代為「\」,以此類推。
完成取代之後請直接另存新檔 .. 這時把檔案類型設定儲存成 UTF-8。
最後您就可以回到 phpMyAdmin 中將這個 sql 檔匯入 MySQL 中了。以下是參考的指令:
mysql --user=使用者名稱 --password=密碼 --default-character-set=utf8 資料表名稱 < 輸出檔名.sql
希望不要再遇到了,還是 Utf8 好。