MySQL 4.0是以big5編碼,許多big5沒有的字就難以呈現,雖然在4.1之後版本有支援utf8編碼,但是如何將4.0資料庫內以big5編碼的資料正確轉到最新版MySQL 5.1以utf8編碼,就得花些功夫。
1.備份資料庫:
C:\mysql\bin>mysqldump -u root -pYourPassword --default-character-set=latin1 --add-drop-table YourDbName > db_latin1.sql
2.轉換編碼:
(1).首先,你必需先準備EmEditor,然後用它開啟你4.0的db_latin1.sql檔
(2).在最前面加入以下三行。
SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;
為了確保新的MySQL5.1資料庫資料表為utf8編碼,必須變更原來db_latin1.sql內容中CREATE TABLE的編碼字串,
以編輯器搜尋取代方式找「);」改成「) ENGINE=MyISAM DEFAULT CHARSET=utf8;」
為了解決big5中的「許功蓋餐…」等字元在T-SQL插入字元的欄位後方,造成欄位對應不正確,必須統一取代:
- 將文字內容「?,'」以「','」取代
- 將文字內容 「\',」以「',」取代
(3).選另存新檔->類型不用改,編碼選utf8,加入BOM那邊不要勾選,換行方式選 僅有 LF(UNIX)->存檔newdb.sql
(或者使用convertz將big5編碼檔,轉成utf8編碼格式)
3.設定MySQL確認資料庫編碼為utf8
修改my.ini,在client區段加入default-character-set=utf8,如下
[client]
default-character-set=utf8
[mysql]
default-character-set = utf8
4.倒回資料:
(1). 新增資料庫
mysql> create database newdb
-> \g
mysql> use newdb (確認新資料庫建立無誤)
(2). 執行mysql匯入資料
C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql -u root –p YourPassword newdb < d:\mysql\newdb.sql