瀏覽器預覽PHP檔案時頂部出現空白影響布局分析原因及解決辦法_php技巧

來源:互聯網
上載者:User
在編寫PHP檔案過程中,發現在瀏覽器預覽PHP檔案時,頂部會出現一行空白,影響了頁面的布局。

關於BOM header的解釋如下

通常情況下,使用Windows系統內建的記事本程式編寫網頁程式,但在編寫或修改php部落格系統代碼後,進行調試時總是會出現如同以下幾點問題:

–不能登入或者不能登出;
–頁頂出現一條空白;
–頁頂出現錯誤警告;
–其它不正常的情況。

分析原因
由於使用UTF-8編碼,在編寫或修改代碼後都儲存為utf-8編碼格式。雖然現在幾乎所有的文本編輯軟體都可以顯示並編輯UTF-8編碼的檔案,但是很遺憾的是其中很多軟體的表現並不理想。

類 似WINDOWS內建的記事本等軟體,在儲存一個以UTF-8編碼的檔案時,會在檔案開始的地方插入三個不可見的字元(_0xEF _0xBB _0xBF,即BOM——Byte Order Mark)。它是一串隱藏的字元,用於讓記事本等編輯器識別這個檔案是否以UTF-8編碼。對於一般的檔案,這樣並不會產生什麼麻煩。但對於 PHP來說,PHP在設計時就沒有考慮BOM的問題,不會忽略UTF-8編碼的檔案開頭BOM的那三個字元,會把BOM作為該檔案開頭本文的一部分。由於必須在<?或者<?php後面的代碼才會作為PHP代碼執行,所以將會造成在頁面上輸出這三個字元,顯示效果就要看瀏覽器了,一般是一個空行或是一個亂碼。由於在html一開頭有這3個字元的存在,即使頁面的 top padding 設定為0,也無法讓整個網頁緊貼瀏覽器頂部。由於受COOKIE送出機制的限制,在這些檔案開頭已經有BOM的檔案中,COOKIE無法送出(因為在 COOKIE送出前PHP已經送出了檔案頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實現的功能全部無效。

解決辦法

在編輯、更改任何文字檔時,請務必使用不會亂加BOM的編輯器。Linux下的編輯器應該都沒有這個問題。WINDOWS下,請勿使用記事本等編輯器。推薦的編輯器是:
Editplus 2.12版本以上;
EmEditor;
UltraEdit(需要取消‘添加BOM'的相關選項);
Dreamweaver(需要取消‘添加BOM'的相關選項);
Notepad(需要進行“轉換為不帶BOM的UTF-8”)等。

對於已經添加了BOM的檔案,要取消的話,可以用以上編輯器另存一次。(Editplus需要先另存新檔gb,再另存新檔UTF-8。Dreamweaver在”頁面屬性“的 “包含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.