原本的環境是 MySQL 4.0.27,用的是 Big5 編碼
按照教學文章的做法相當順利,除了中間有遇到使用者 ID 重複的問題外 ( 進 phpbb_users Table 刪除即可 )
其它都還蠻順利的,升級完就是 3.0.1 + UTF-8 編碼了
希望這次升級能擋住機器人留言的攻擊
這是個很久的問題了,還是記錄一下吧。
若先前從 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 編碼才可以真正解決編碼的問題。
原文如下:
Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stable & production-ready and as PHP 6 is on the way, PHP 4 will be discontinued.
The PHP development team hereby announces that support for PHP 4 will continue until the end of this year only. After 2007-12-31 there will be no more releases of PHP 4.4. We will continue to make critical security fixes available on a case-by-case basis until 2008-08-08. Please use the rest of this year to make your application suitable to run on PHP 5.
For documentation on migration for PHP 4 to PHP 5, we would like to point you to our migration guide. There is additional information available in the PHP 5.0 to PHP 5.1 and PHP 5.1 to PHP 5.2 migration guides as well.
<?php
$orginal_string = "今天天氣非常好";
$result = mb_substr($orginal_string, 0, 3, 'BIG-5');
echo $result; // 會輸出 "今天天"
?>