轉換 MySQL 匯出 Latin1 編碼的 SQL 檔為 UTF-8

網路上查到大多是使用 iconv工具或只是教人在 mysqldump 時轉換的步驟!

一直以來我也比較常碰到上面這樣自己有權限看原始資料 DUMP 所以操作無異~

結果這次碰到一個交接業務上的問題

交接對象不好搞,要不到權限看原始資料,而且還是用latin1編碼開發

所以拿了一個原本是 Latin1 編碼的資料但是被匯出成 UTF-8 編碼的 SQL 檔(無法閱讀)

怎~麼~辦~

最後解鈴還需繫鈴人 MySQL

原理就是先匯入進資料庫,在跟 MySQL 說我要匯出怎樣的編碼就好。

方法如下:

先把那已匯出的亂碼SQL重新匯入,設定預設編碼latin1,告訴 MySQL 正在使用何種編碼輸入,這樣當翻譯角色的 MySQL 才會知道該怎麼處理資料。

mysql -u USER -pPASSWD --default-character-set=latin1 --database=DBNAME < dump.sql

再來將剛剛匯入的資料庫再指定好正確編碼latin1匯出。

mysqldump -u USER -pPASSWD --opt --quote-names --skip-set-charset --default-character-set=latin1 --database=DBNAME > dump_utf8.sql

資料編碼正確就會解的回來!

PS:MySQL 輸出的檔案是用 UTF-8 格式,面對這件事不能只看檔案編碼,而是他資料的編碼。也就是當初latin1的資料被匯出為UTF-8時,只是將latin1編碼的資料字串轉成UTF-8格式再寫入,自然在解讀上就會有困難,所以將latin1編碼轉成一樣的編碼就會看到原始寫入的資料囉~ (簡言之,資料內容是一回事,怎麼顯示又是一回事)

參考資料

Easiest way to fix MySQL UTF8 to Latin1 character set encoding issues.

Facebook 外掛整合

Share: