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

本篇文章更新時間: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.


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

參與討論

1 則留言

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

發佈留言

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


文章
Filter
Apply Filters
Mastodon