BloggerAds

2007年5月4日 星期五

Big5轉UTF8怎麼多<feff>?!

在網頁的編碼方面....簡體中文是使用GB2312比較多;繁體中文是用Big5來編碼較為普遍!

而Big5會導致「許蓋功」的issue,這issue,它會使得表單文字輸入欄位失效,資料無法順利的傳送到伺服器端作處理,故近來網頁開放程式碼的專案都使用UTF-8的編碼作為繁體中文網頁編碼的替代方案!

介紹一下「許蓋功」,這不是人名,我們都知道一個中文字其長度為2個半形字,一個英文或數字為1個半形字,而「許」、「蓋」、「功」這三個中文字,都有個特徵!那就是它們拆成各自獨立的半形字皆有一個符號-「\」;沒錯!這個符號是用來標記特殊字元的保留與否用的,若隨意的在Big5網頁輸入這符號,將會使HTML的標籤(tag)出現錯誤,進而會讓使用者無法順利進行表單的傳送。

大多數的電腦玩家都是使用M$的作業系統-Windows系列,而微軟早期(Windows Me &Windows Xp 時代)都是以Big5編碼為主流,有部份是使用Unicode編碼,所以就會習慣在Unicode的文件裡,多加一個字元,以Unicode的角度看是「<feff>」,這字元是用來方便辨識此文件為Unicode編碼用的,一般編輯軟體是看不到這字元的,檢視文件大小也不會算在內,那...又有什麼關係?

以網站程式設計師(PHP)的角度看這狀況,若伺服器是使用M$的平台架設的,那就無所謂!但是,以Linux系列的伺服器會發現,每次只要使用SESSIOM_START()的語法,就會出現個警告訊息,該訊息意指此語法無法被使用,因為網頁有輸出資料!

嘖...嘖...嘖!這就會影響網站的正常運作了!!靠這吃飯的我怎能讓此狀況如此猖狂下去呢,所以全面換血,頁面以Utf-8為編碼,又尋找了以PHP語法撰寫Big5轉UTF-8的相關函式以及偵測的小程式來作為替代方案!以備不時之需。

以上純屬工作經驗...獻醜了!...

沒有留言: