閱讀此文章前建議請先看這篇【資料庫】從 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 編碼來執行了 !!!

參考資料

MySQL 4.0 Big5編碼升級MySQL 5.1轉移為UTF8編碼

The Will Will Web - 如何將 MySQL 4.0 的繁體中文資料庫移轉到 MySQL 5.1

arrow
arrow
    全站熱搜

    Bojack 發表在 痞客邦 留言(0) 人氣()