本篇文章更新時間:2019/02/16
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持


網路上查到大多是使用 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.


Share:

作者: Chun

WordPress 社群貢獻者、開源社群推廣者。專注於 WordPress 外掛開發、網站效能最佳化、伺服器管理,以及 iDempiere 開源 ERP 導入與客製開發。曾參與 WordCamp Taipei 等社群活動,GitHub Arctic Code Vault Contributor。提供資訊顧問、WordPress 開發教學、主機最佳化與企業 ERP 整合服務。

參與討論

1 則留言

  1. 自動引用通知: [MySQL] 無指令方式將 latin1_swedish_ci 編碼資料匯出成 UTF-8 | 一介資男

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon