本篇文章更新時間:2019/02/16
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
網路上查到大多是使用 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.
發佈留言