所以有把 MySQL 改成使用 utf8 編碼是很有必要的, 花了一點時間終於把資料安全的轉移完成, 我的平台是 FreeBSD 6.0 / MySQL 4.1, 其他平台應該也可行
1. 先檢查 MySQL 預設的編碼
mysql> show variables like '%character%'
port 安裝時預設是 latin1, 這時候應該看到的都是 latin1, 都是 utf8 的話就不用改了.
2. 把資料全部備份出來
注意要下參數指定編碼, 前一步驟查出來是哪一種, 就設定成哪一種
mysqldump -u root -p --default-character-set=latin1 --add-drop-table 資料庫名稱 > 備份檔名稱
3. 資料轉檔
像我的資料都是塞 utf8 進去, 所以備份出來的檔案內容都是用 utf8 編碼, 不需要特別去動. 有些程式可能是塞 big5 之類的進去, 這時候就要找程式來轉碼 ( 像是 iconv 或 ConvertZ 之類的編碼轉換程式 )
轉碼完成後要更改備份檔的內容, 把 latin1 通通改成 utf8, 其中可以找到的部分有兩種
一種是檔案開頭的 SET NAMES latin1
另一種是每個 table 都會有的 ENGINE=MyISAM DEFAULT CHARSET=latin1
4. 轉碼完成以後就可以去改 MySQL 本體了, 懶的話可以下個變數 WITH_CHARSET=utf8 重裝, 省掉打一堆指令又可能遇到問題的麻煩.
5. 重裝完成後照前面的步驟檢查編碼, 這時候應該都是 utf8, 把轉碼後的資料倒回 MySQL ,收工.
還好之前塞進去的資料都是用 utf8, 不然在轉碼的時候會累死人
沒有留言:
張貼留言