閱讀此文章前建議請先看這篇【資料庫】從 MySQL 4.0 Big5 編碼資料庫升級到 MySQL 4.1 Big5 編碼資料庫
上一篇是在說如何將 4.0 以 Big5 編碼的 DB 轉匯到 4.1 同樣以 Big5 編碼的方法
但是用 UTF-8 編碼是現在的趨勢了,也比較不會有字元爛掉的問題
這一篇教學算是承上,原則上 MySQL 的環境都不變
首先我們一樣要先新建資料庫,這次就要改用 UTF-8 來編碼
# mysql -u root -p
Enter password: (輸入密碼)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 115 to server version: 4.1.25
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database `big5` default character set utf8 collate utf8_unicode_ci;
Query OK, 1 row affected (0.03 sec)
phpMyAdmin 新增的方式如下
【從舊的 MySQL 3.0/4.0 倒出資料】
倒資料出來的指令很簡單,用 mysqldump 即可
# mysqldump -u root -p --default-character-set=big5 big5 > big5-utf8.sql
接下來我們要來處理
編輯 big5-utf8.sql,確認 Default Charset 為 UTF8
我是用 Emeditor 開啟 big5-utf8.sql,在 big5-utf8.sql 最上面加入二行
SET NAMES 'utf8';
SET CHARACTER SET 'utf8';
將原本 TYPE=MyISAM; 取代成 TYPE=MyISAM DEFAULT CHARSET=utf8;
另存新檔時請確認 Emeditor 的編碼為 UTF-8,加入 Unicode 署名 (BOM) 不要打勾
接下來要處理原本 Big5 編碼可能會造成新增失敗的問題,也就是「許功蓋」會多出來的 \ 號
將 SQL 內容 ?,' 用 ',' 取代,還有 \', 用 ', 取代
把這檔案放到新的 MySQL 4.1.25 的機器吧
【將資料倒入 MySQL 4.1.25】
倒回來沒有什麼難度,一行就可以搞定了
# mysql -u root -p --default-character-set=utf8 big5 < big5-utf8.sql
若沒有問題的話,在 phpMyAdmin 裡面我們就可以看到中文囉!
【利用 Convertz 轉換原本的 Big5 編碼的程式至 UTF-8 編碼】
雖然資料庫已經轉換 OK 了,但是我們原本的程式都還是以 Big5 編碼,這樣程式讀出來還是會亂碼
因此我們需要將原本的程式做一個轉換,若檔案很多的話,這邊是推薦用 Convertz 來轉,在這邊可以下載的到,若連結失效就請自行找吧
下載解開壓縮後執行,它會出現在工具列的右下角,請在上面按右鍵選「純文字檔案轉換」
請先設定好「來源檔案」跟「目的地」,設定完畢後就可以按下方的「全部加入」
接下來請按「進階選項」
輸入格式請選 Big5,輸出格式請選 UTF-8,再按隱藏進階選項
最後再按開始轉換,原則上程式不多的話 1 秒鐘就可以做完了
【資料庫連結設定方式】
最後是 PHP 與 MySQL 連線時,最好校對編碼的動作先做好,以確保無誤
程式如下,最重要的是第 5 & 第 6 行要加進去 !!
$host = "localhost";
$user = "user";
$passwd = "password";
$connect = mysql_connect($host,$user,$passwd);
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET CHARACTER SET UTF8");
mysql_select_db("database",$connect);
這樣你原本在 MySQL 4.0 以 Big5 編碼所執行的程式與資料庫,通通就可以移轉到 MySQL 4.1 並且以 UTF8 編碼來執行了 !!!
參考資料
留言列表