解決MySQL4升級MySQL5碰到UTF8的方法

回覆文章
布魯斯
Site Admin
文章: 211
註冊時間: 週四 2月 16, 2006 3:34 pm

解決MySQL4升級MySQL5碰到UTF8的方法

文章 布魯斯 »

原本在Fedora Core3所裝的是MySQL3.23,
MySQL4.1之後資料庫編碼已改成Unicode,之前是lantin1,

原本的環境:
Fedora Core3、Apache2.053、MySQL3.23.58

新環境:
Fedora Core5、Apache2.2.2、MySQL5.0.27

記住轉換前舊環境的資料一定要備份

1.將資料匯出

如果原先是Big5的資料,dump出來後就直接把Big5轉成UTF-8即可。

代碼: 選擇全部

#mysqldump -u account -p –default-character-set=latin1 database >output.sql

#piconv -f big5 -t utf8 output.sql >utf8.sql


如果原先是UTF-8的資料,dump出來後要先轉成Big5後,再把他轉成UTF-8,因為原先dump出來的是偽裝成UTF-8的lantin1不是真正的UTF-8。

代碼: 選擇全部

#mysqldump -u account -p –default-character-set=latin1 database >output.sql

#piconv -f utf8 -t big5 output.sql > big5.sql
#piconv -f big5 -t utf8 big5.sql >utf8.sql



如果是在windows下,可用ConvertZ這個軟體來轉,
另外一個方法是用notepad打開,再另存新檔,編碼選擇「UTF-8」。

2.在MySQL5下開一個新資料庫,
建立時”校對”要選utf8_general_ci

代碼: 選擇全部

CREATE DATABASE `XXX` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


接下來就是將剛剛匯出的SQL檔import進去,
有時候原本匯出的文字中有許功蓋的字時,會多出「\」,
匯入時會發生錯誤,用文字編輯器將其消除再匯入,

代碼: 選擇全部

#mysql -u account -p XXX < utf8.sql


這樣你可以用phpMyAdmin來看新匯入的資料庫的資料是否是正常的。

附註:
1.在MySQL5裝好之後,修改my.cnf,win32下是my.ini

代碼: 選擇全部

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
default-collation=utf8_general_ci


重新啟動MySQL,這樣資料庫預設是UTF-8編碼,校對是utf8_general_ci

2. 程式部分,用php去連資料庫時,
在query之前加入,
[code]mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=utf8"); [code]

另外加上
[code]header("Content-type: text/html; charset=UTF-8");[/code]

使網頁以UTF-8編碼

參考文章:
http://blog.leolo.cc/2006/02/06/134/
回覆文章