2012年9月25日

PHP筆記 - 關於 UTF-8 編碼及 BOM 標示碼

關於 PHP 網站開發的編碼,有經驗的開發者都知道:用 UTF-8 就對了!

但為了確保已經使用 UTF-8 編碼的網站運作沒問題,還需要注意:
  1. PHP 使用較新的版本(建議搭配 Linux 服用效果更佳)
  2. MySQL 或其他資料庫(包括 Driver、Entity Framework)使用較新版本
  3. 建立資料表時使用 Unicode / UTF-8 編碼
  4. MySQL 建立連線時執行 SQL 「SET NAMES UTF8」確保連線使用正確編碼
  5. 所有 PHP 程式碼檔案本身都必須正確設定 UTF-8 編碼

關於 UTF-8 開發者還需要知道「BOM」,因為某些暈倒死的作業系統,很可能在存檔時自動加上「BOM」符號,雖然檔案的文字內容看似沒有差異,但只要打開文件編輯器的十六進位(HEX)檢視模式,就會發現檔案最前方出現「EF BB BF」的多餘字元。對 PHP 程式來說這些字元就被偷偷附加在網站回傳的結果,最常見的問題是造成「headers already sent」的錯誤。

使用 MadEdit、Sublime Editor 等進階文字編輯器,可以在選單找到存檔編碼格式有區分成:「UTF-8 with BOM」及「UTF-8 without BOM」,記得要選擇將 BOM 碼給移除的編碼。


為了避免其他引入(include)的程式碼附帶 BOM 碼,也可以搭配 ob_start() ... ob_end_clean() 將緩衝區清除。但最好的方式還是利用批次檔,一次將所有程式檔案的 BOM 碼移除。

1 則留言:

  1. "暈倒死"?著實讓我愣了二秒鐘~~~

    回覆刪除

lyhcode by lyhcode
歡迎轉載,請務必註明出處!