close

最近忙著將網站的語系由big5全部修改為Unicode萬國碼,這中間遇到了一些問題,記下來免得忘了..

稍微玩過電腦大概都會知道big5碼指的是什麼,這是資策會在民國70幾年為五大套裝軟體設計的中文內碼,包括13,053個字與441個符號,使用雙位元組字符集,也就是一個中文字是由兩個位元組(byte)來構成,但是因為big5碼低位元組的一些字元與電腦系統的某些慣用命令字元會有衝碼的問題,還有大家熟知的「許蓋功」問題,為了修正或者補充一些不足之處,許多廠商甚或政府單位做了一些big5碼的延伸修正,但是有相容的問題存在,雖然big5面臨了這些問題,但是因為沿用已久,所以許多應用還是使用了這個大五碼.....咱門家的網站當時規劃也是使用BIG5....

Unicode是業界的一種標準,能夠處理世界上幾十種的文字,截至目前為止已經包含超過10萬個字元,Unicode對於每個字元得編碼是確定的,但是在傳輸資料的過程中遇到不同作業系統平台可能會有所差異,而且為了節省儲存資料的空間(例如英文字母與中文字所佔空間的差異),所以Unicode的編碼實做有好幾種,現在我們使用的編碼除了悠久歷史的big5(因為歷史的包袱或許目前還是最多的...),其他大概就是UTF-8(8-bit Unicode Transformation Format)這種可變長度Unicode編碼,說了這麼多,既然big5使用的地方還是很多,幹嘛大費周章改用UTF-8?啊.....啊就有人建議我就改了啊....

好了,回歸正題,網站當中經常用到截取部分長度來顯示標題,這當中需要計算字串的長度,在PHP中我們常使用strlen、mb_strlen這兩個函數來計算字串的長度,UTF-8對於128 個 US-ASCII文字為一個位元組的長度,中文則是3個byte.....

strlen計算出來的是不同類型文字的bytes數量,例如strlen('超人的部落格NO1')會算出21

mb_strlen計算出來的則是字元數量,例如mb_strlen('超人的部落格NO1','utf8')會算出9

好啦....說完了,要繼續奮鬥改網站囉!


arrow
arrow
    全站熱搜

    舞山林超人 發表在 痞客邦 留言(0) 人氣()