2007年12月29日 星期六

MySQL 呼叫後的顯示問題

終於決定將原先用的很習慣的 EasyPHP V1.7 升級到 AppServ V2.5.9,
或許有人不同意這是升級,因為這是由二組完全不同的人所整合的軟體,
然而因為 EasyPHP 已經很久沒聽過有升級的結果,
或許是因為他們的市佔率沒有起來的關係吧,
總之他們的 V2.0 Beta 在2006年推出之後,就沒再更新,
所以小弟只好另求高明了!

升級到 AppServ V2.5.9,其實也就是做了以下升級
Apache 2.2.4
PHP 5.2.3
MySQL 5.0.45
phpMyAdmin-2.10.2

這個升級最大的差別就是資料庫字型的選擇,
因為 MySQL 5.0 之後,就可以全面支援 utf-8 的字型了,
同時也直接避開了『許蓋功』的問題了!
也就是說使用者可以隨便輸入他想輸入的文字了,
對於日益全球化的資訊世界來說,
這真的是一個好消息!

可是升級也是要付出心血的,
早就聽說這樣的升級,
對於字型的設定以及轉碼 (Big5->utf8) 的處理要特別小心,
因為沒處理好的話,
那先前努力的心血就~~白費了!

好了廢話不多說,
這篇文章主要是要記錄以下這行命令:
SET NAMES 'utf8'

因為就在我將 MySQL 的資料庫改成 utf8 之後,
透過 Phpmyadmin 的管理介面看起來也都正常的情況下,
所有 .php 的語法,
再透過 PHP Server 解譯成 HTML 語法後,
其中所擷取的 MySQL 資料庫的資料,
卻又變回 ??? ,WHY?
找遍了網路上的答案,
卻無一能解決我的問題,
於是只能回過頭,耐著性子看著買回來的書,
終於在『徹底研究MySQL5』的628頁找到這個問題的救贖,
因為,一般資料再由MySQL送到PHP時,
內定是以Latin1的格式,
因此必須以『SET NAMES 'utf8'』的指令,
通知MySQL改以 utf8 的格式傳送資料,
果然,
這一修改了卻了我這兩年來的憂!

沒有留言: