[login.php]登入頁面-->[check.php] 登入 -> [tpolygondemo2.php] 首頁
_>[name.php]新增會員 ->[addmember.php] 新增會員至資料庫
網頁編碼皆選擇 utf-8 ,
name.php的表單資料(變數)傳遞給在背後的addmember.php,進行insert to DB動作
要在DB management 上看到繁體中文,需要在addmember.php裡面的資料庫連結部分加上
mysql_query("SET NAMES 'utf8'");
這是寫繁體中文進資料庫的方法
試著用mysql_query("SET NAMES 'big5'");
結果在DBM看到的是亂碼(非一堆問號,是中文字..)
以上都是網頁編碼選擇UTF-8 ,那反過來呢?
如果網頁編碼選擇 big5
連結資料庫時 加上mysql_query("SET NAMES 'big5'");
沒問題 ~ 正常顯示
試著用mysql_query("SET NAMES 'utf8'");
這裡忘記了.. 只依稀記的應該也是中文亂碼
目前寫進資料庫 ~ 沒問題了~
那讀出來呢? 問題大了 ~~~
0~7 是 陣列資料 利用下列方式
$fields_data = mysql_fetch_row($result)
再用 foreach($fields_data as $name => $value ) // 把每一筆直印出來
{echo "$name : $value
" ; }
圖中"問號"就是繁體部分.. 現在要解決的就是中文讀取問題囉~
參考 MySQL 中文編碼徹底研究 作者jaceju 寫的非常詳細,值得花時間去看
文中提到
當 MySQL 要寫入資料或讀出資料時,它無法確定這些資料的格式是不是符合使用者的要求。這時候我們就得自行指定正確的編碼,讓 MySQL 自動轉換這些資料。因此,在對 MySQL 4.1 以後的版本下達 INSERT, UPDATE 及 SELECT 指令之前,都應該要先用以下指令來指定正確的連線校對
SET NAMES 'utf8'
也就是說在 MySQL 4.1 以後,就算我們把預設字集設為 big5 或 utf8 ,事實上還是得看資料庫或資料表實際所設定的校對編碼 (除非建立時採用繼承值) 。所以 SET NAMES 只會影響 MySQL 伺服端和 PHP 程式之間的通訊編碼格式,跟預設字集沒有太大關係。
看樣子使用utf-8頁面編碼比起big5 會方便許多,之前寫的網頁都是用big5,趁還沒太多網頁,全部改為utf-8了
跟寫入時一樣, 讀取時 設定 SET NAMES 'utf8' 編碼目前都沒問題了
沒有留言:
張貼留言
try comments