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/