程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> [BOM]PHP程序的UTF8神秘編碼問題之解

[BOM]PHP程序的UTF8神秘編碼問題之解

編輯:關於PHP編程

 提示:采用UTF-8編碼的用戶請勿使用記事本對代碼文件及模板文件進行編輯,使用可以去掉Unicode 簽名(BOM)的工具進行編輯。如果您的網站打開一片空白、樣式丟失、程序報錯很可能是您使用了未能去掉BOM的工具對模板文件或源碼文件進行了修改。
 
  現在幾乎所有的文本編輯軟件都可以顯示並編輯UTF-8編碼的文件。但是很遺憾,其中很多軟件的表現並不理想。
  類似WINDOWS自帶的記事本等軟件,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用於讓記事本等編輯器識別這個文件是否以UTF-8編碼。對於一般的文件,這樣並不會產生什麼麻煩。但對於PHP來說,BOM是個大麻煩。
 
  PHP並不會忽略BOM,所以在讀取、包含或者引用這些文件時,會把BOM作為該文件開頭正文的一部分。根據嵌入式語言的特點,這串字符將被直接執行(顯示)出來。由此造成即使頁面的top padding 設置為0,也無法讓整個網頁緊貼浏覽器頂部,因為在html一開頭有這3個字符呢!
 
  最大的麻煩還不是這個。受COOKIE送出機制的限制,在這些文件開頭已經有BOM的文件中,COOKIE無法送出(因為在COOKIE送出前PHP已經送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實現的功能全部無效。
 
  因此,在編輯、更改任何文本文件時,請務必使用不會亂加BOM的編輯器。Linux下的編輯器應該都沒有這個問題。WINDOWS下,請勿使用記事本等編輯器。推薦的編輯器是:Editplus 2.12版本以上;EmEditor;UltraEdit(需要取消'添加BOM'的相關選項);Dreamweaver(需要取消'添加BOM'的相關選項)等。
  對於已經添加了BOM的文件,要取消的話,可以用以上編輯器另存一次。(Editplus需要先另存為gb,再另存為UTF-8。)
 
在Dreamweaver 裡可以去掉Unicode 簽名(BOM),點菜單欄裡的修改-> 頁面屬性,或直接按Ctrl+J 快捷鍵。


\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved