[BOM]PHP程式的UTF8神秘編碼問題之解_PHP教程

來源:互聯網
上載者:User
 提示:採用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 快速鍵。


http://www.bkjia.com/PHPjc/478222.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478222.htmlTechArticle提示:採用UTF-8編碼的使用者請勿使用記事本對代碼檔案及模板檔案進行編輯,使用可以去掉Unicode 簽名(BOM)的工具進行編輯。如果您的網站打...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.