主題: MYSQL編碼?
查看單個文章
舊 2007-01-24, 09:51 AM   #5 (permalink)
Chin-Wei 帥哥
長老會員
 
Chin-Wei 的頭像
榮譽勳章
UID - 114112
在線等級: 級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時級別:14 | 在線時長:257小時 | 升級還需:28小時
註冊日期: 2007-02-18
文章: 3448
精華: 0
現金: 1674 金幣
資產: 32804 金幣
預設

引用:
作者: ppp0600
我記得之前安裝的時候是用BIG5碼作為基礎,
但是後來的程式都是UTF8,
造成後來的程式顯示都是亂碼,
我想請問可以將資料庫改成UTF8嗎?
那原本BIG5的資料會變亂碼嗎?
是否有其他方法可修改?
我是有查到一篇用手動改法,
只是我不清楚怕毀了資料......
(我已經毀掉過兩次了

1. 可以改成 UTF-8
2. 有些字的前面會自動被加上 \,所以你要自己手動去改那些字,eg.許、功、蓋等
3. phpbb2 本身要改編碼
4. MySQL 本身也要改編碼
5. 以上有個環節出錯,你的資料庫就毀了,請先做好備份


==
接下來開始教你實戰過程XD

1. 請先把資料庫使用 mysqldump,以 latin1 格式備份出來(資料庫預設都是使用 latin1)
mysqldump --all-databases --default-character-set=latin1 -u root -p > mysql.sql

注意,這一步沒做,你轉換一定失敗。


2.把資料表的編碼修正為 UTF8
找出下列幾行,並將所有的 latin1 改為 utf8
s/SET NAMES utf8
s/ENGINE=MyISAM DEFAULT CHARSET=utf8
s/ENGINE=InnoDB DEFAULT CHARSET=utf8
s/ENGINE=MEMORY DEFAULT CHARSET=utf8


3.實際進行轉換(big5 -> utf8)
iconv -c -f big5 -t utf8 mysql.sql > mysql_utf8.sql


4.修改 MySQL 啟動參數

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'


5. 執行 show variables like 'character\_set\_%';觀察結果是否為下表所列。

+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+--------+



6. mysql -u root < mysql_utf8.sql


恭喜你,資料庫轉換完畢 ^^a





==
還有不懂的地方可以參考這本,寫得很棒,目前啃過的MySQL書就這本最優
http://ec2.images-amazon.com/images/P/0672326736.01._BO2,204,203,200_PIlitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_SCLZZZZZZZ_V38088228_.jpg





什麼都要懂、什麼都要會
您好,我是萬能小叮噹XD
__________________
思考,正是從一個錯誤,跳進另外一個錯誤。
Chin-Wei 目前離線  
送花文章: 5387, 收花文章: 1361 篇, 收花: 5457 次
回覆時引用此帖
向 Chin-Wei 送花的會員:
ppp0600 (2007-01-24)
感謝您發表一篇好文章