2010年4月16日

將MySQL資料轉換為真正的UTF-8

以資料庫 lalala 為例:

1. 將MySQL 資料庫 匯出 lalala_latin1.sql 檔(以phpMyAdmin匯出即可) → 此時檔案編碼為UTF-8,預設建立資料表編碼為 latin1

2. 將 lalala.sql 檔內的「DEFAULT CHARSET=latin1」 皆改為 「DEFAULT CHARSET=utf8」,轉存為「lalala_utf8.sql」(注意是否含BOM)


3. 於MySQL5 內建立空資料庫 「lalala」,把 lalala_latin1.sql 或 lalala_utf8.sql 匯至 MySQL5

3.1「校對」選 「 latin1_swedish_ci 」+ lalala_latin1.sql (假的UTF-8):

使用phpMyAdmin:需使用改過 latin1 設定的版本 (ex. 使用phpMyAdmin2.6.0-rc1並改過設定) 進行匯入,SQL檔案需為「UTF-8未含BOM」,方能正常執行

使用mysql命令列:mysql -u root -p --default-character-set=latin1 lalala < lalala_latin1.sql

3.2「校對」選 「 utf8_general_ci 」+ lalala_utf8.sql:

使用phpMyAdmin:需使用「未改過」latin1 設定的版本 (ex. phpMyAdmin2.11.10) 進行匯入,SQL檔案「需為 UTF-8、有無BOM皆可」,方能正常執行

使用mysql命令列:mysql -u root -p --default-character-set=utf8 lalala < lalala_utf8.sql

(lalala 為欲匯入的資料庫名稱,lalala_utf8.sql 為匯入的SQL檔名)

4. 使用步驟 3.2 匯入真正的UTF-8資料時,conn_db 連線函數內、查詢sql指令前,需加上下列三行
mysql_query('SET NAMES `utf8`');
mysql_query('SET CHARACTER_SET_CLIENT=utf8');
mysql_query('SET CHARACTER_SET_RESULTS=utf8');

$result=mysql_db_query($sys_dbname,$sql,$link);
===> // PHP5.3以上已棄用mysql_db_query,需改使用下列程式碼

$db_selected = mysql_select_db($sys_dbname, $link);
if (!$db_selected)
{ die ('Can\'t use DB : ' . mysql_error()); }
$result=mysql_query($sql);

可參考的網址

沒有留言:

張貼留言