Click here to
get yummy grain feed
delivered to your RSS oven

rss

  • Businesswing Design BLOG
  • Assist to join the global market.
3-2 網頁編碼很重要嗎?

Date:十二月 8, 2009 | Author:eggggg

各位經常瀏覽網頁,不覺得網頁編碼是很重要的事情,但是在PHP與MySQL的世界裡,網頁編碼是很重要的事情! PHP5時代支持UTF-8編碼,而PHP6則將UTF-8設定為預設編碼,對於東亞地區雙位元的文字,可提供更好的支援。MySQl 4.1版之後不僅支持UTF-8編碼,而且更進一步地可在資料庫、資料表、欄位上設定語系,也可在查詢時指定語系。因為MySQL4.0(含)之前是不管編碼(預設是latin1)的,網頁要如何顯示,是交由html的<meta>標籤與編碼格式來決定的。所以MySQL的這一個改變,讓很多網站在升級之後,就會變成亂碼顯示。 但MySQL為何要這樣做呢?MySQL這樣做的目的,是讓您可在一個資料庫內存放不同編碼的資料。所以網頁必須設定好編碼,PHP才可依照您指定的編碼作資料存取,但如果沒有設定好,那網頁或者資料庫裡將變成火星文而難以閱讀。 很多人不願讓PHP與 MySQL升級,就是因為編碼。其實,隨者網路的發達,除非您的網站有特別限制,否則可預期會有來自全球各地的朋友觀看您的網頁或留言。很多公司現在將公司的部門分散在全球各地,或者要滿足全球各地的客戶,網頁上必須能顯示正體中文、簡體中文、日文、泰文,那該怎麼辦? 一個網頁只能顯示一種編碼的文字,所以若一個網頁內需包容多個語系的文字,您可能會將其他編碼文字用圖片方式顯示,但這樣的處理方式,其實是很麻煩的。假如使用UTF-8,就可以解決這個問題,將所有文字全部都包含進去。因此不論您使用哪一個地區的文字均可用相同的編碼顯示。 PHP與Big5編碼裡裡的若干文字有語法上的衝突,更是讓我們不得思考是否要將編碼改為UTF-8。 Big5編碼設計時用兩個Bytes來代表一個中文字,例如「淚」這一個字的編碼是"B25C〞。每個中文字的第一個Byte使用ASCII裡的高字元(129-255),第二個Byte用到了部分低字元(1-128),但沒有排除ASCII的控制碼,所以這樣的設計也成為日後各種資訊應用上不便的原因。 5C這個編碼就是「\」,在PHP裡面是被拿來當跳脫字元使用,也就是說當變數裡有單引號或雙引號時,為了可以正確顯示這些特殊字元,通常需要多加一個「\」,例如以下的範例,而這裡的「echo」指將後面的文字回應在網頁上。(檔案名稱:「3」資料夾內「abctest.php」)
01 <html><head><title>第一個PHP網頁</title>
02 </head><body>
03 <?
04 echo "\"nabc test";
05 ?></body></html>
網頁上原本應該顯示 \"nabc test,但實際上,您在瀏覽器上會看到: 【圖3  網頁內顯示:”nabc test】 我們回頭檢視剛剛設計的big5.php,問題出在哪裡呢?因為功的第二個Byte是 5C ,加上後面接的是雙引號,因此經過解譯之後,最後面的雙引號被認定為文字,進而造成語法少了最後那個雙引號,所以才會出現問題。 也許各位想用函數的方式做文字的過濾,讓中文字能順利顯示,但這樣處理的方式,其實會增加網頁維護的困難度,Unicode的環境既然是不能避免(Linux環境早就是Unicode編碼),PHP與Big5在編碼上既然有衝突,且MySQL又預設為UTF-8編碼,那麼我們應該趁早準備,早點將網頁與資料庫改為UTF-8編碼。 

接下來:3-3 將網頁轉換成UTF-8

葉建榮  jiannrong@gmail.com

Post to Twitter Post to Plurk Post to Yahoo Buzz Post to Delicious Post to Digg Post to Facebook Post to MySpace Post to Ping.fm Post to Reddit Post to StumbleUpon

相關文章:

    

發表迴響

     top