這是個很久的問題了,還是記錄一下吧。

若先前從 MySQL 4.0 開發的資料庫升級到 4.1 版本之後,大部份都會有所謂「編碼」的問題。

今天處理的情況就是原本用 Big5 編碼的 Database 移到 MySQL 5.0 之後就變一堆亂碼了 ( 應該說都變成用 UTF-8 編碼 )

過去處理的情況就是將網頁也都一起轉為 UTF-8 的格式就可以解決了( 在這我是用 ConvertZ 來轉換 ),且用 UTF-8 編碼可以處理掉很多不必要的麻煩,像許功蓋亂碼的問題。

那要怎麼做?介紹一下二種方法。

第一個就是將全部的 SQL 內容都轉為 UTF-8 ,在建立 Database「校對」時選「utf8_general_ci」,SQL 語法如下。

CREATE DATABASE `資料庫名稱` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


接下來就是匯入原本的 SQL 了,確認一下是否此時瀏覽器是否是用 UTF-8 編碼來觀看。

OK 的話,就再去設定一下連結資料庫的部份。

$dbhost="localhost";
$dbuser="xxx";
$dbpass="xxx";
$all_db="xxx";  //database
$db=mysql_connect($dbhost,$dbuser,$dbpass);
mysql_query("set character set utf8",$db);
mysql_query("SET CHARACTER_SET_database= utf8",$db);
mysql_query("SET CHARACTER_SET_CLIENT= utf8",$db);
mysql_query("SET CHARACTER_SET_RESULTS= utf8",$db);

mysql_select_db($all_db,$db);

另外網頁的部份,在 <head> 和 </head> 中間要加入或修改成這樣,這樣大部份亂碼的問題就會解決了。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

但若堅持用原來的 Big5 來編碼呢?其實也是可行的。

在用 phpMyAdmin 建立資料庫的時候,在「校對」時選擇用「Big5」,SQL 語法如下:

CREATE DATABASE '資料庫名稱' DEFAULT CHARACTER SET big5 COLLATE big5_chinese_ci;

接下來匯入原本的 Dump 出來的 SQL ( 記得也是要用 Big5 來校對 )

最後我們去設定連接資料庫的部份,加入紅色那行即可。

$dbhost="localhost";
$dbuser="xxx";
$dbpass="xxx";
$all_db="xxx";  //database
$db=mysql_connect($dbhost,$dbuser,$dbpass);
mysql_query('SET NAMES big5');
mysql_select_db($all_db,$db);

當然這樣就可以解決亂碼的問題了,不過還是建議用 UTF-8 編碼才可以真正解決編碼的問題。

全站熱搜

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