瀏覽器預(yù)覽PHP文件時(shí)頂部出現(xiàn)空白影響布局分析原因及解決辦法
更新時(shí)間:2013年01月11日 16:03:44 作者:
在編寫PHP文件過(guò)程中,發(fā)現(xiàn)在瀏覽器預(yù)覽PHP文件時(shí),頂部會(huì)出現(xiàn)一行空白,影響了頁(yè)面的布局
在編寫PHP文件過(guò)程中,發(fā)現(xiàn)在瀏覽器預(yù)覽PHP文件時(shí),頂部會(huì)出現(xiàn)一行空白,影響了頁(yè)面的布局。
關(guān)于BOM header的解釋如下:
通常情況下,使用Windows系統(tǒng)自帶的記事本程序編寫網(wǎng)頁(yè)程序,但在編寫或修改php博客系統(tǒng)代碼后,進(jìn)行調(diào)試時(shí)總是會(huì)出現(xiàn)如同以下幾點(diǎn)問題:
–不能登入或者不能登出;
–頁(yè)頂出現(xiàn)一條空白;
–頁(yè)頂出現(xiàn)錯(cuò)誤警告;
–其它不正常的情況。
分析原因:
由于使用UTF-8編碼,在編寫或修改代碼后都保存為utf-8編碼格式。雖然現(xiàn)在幾乎所有的文本編輯軟件都可以顯示并編輯UTF-8編碼的文件,但是很遺憾的是其中很多軟件的表現(xiàn)并不理想。
類 似WINDOWS自帶的記事本等軟件,在保存一個(gè)以UTF-8編碼的文件時(shí),會(huì)在文件開始的地方插入三個(gè)不可見的字符(_0xEF _0xBB _0xBF,即BOM——Byte Order Mark)。它是一串隱藏的字符,用于讓記事本等編輯器識(shí)別這個(gè)文件是否以UTF-8編碼。對(duì)于一般的文件,這樣并不會(huì)產(chǎn)生什么麻煩。但對(duì)于 PHP來(lái)說(shuō),PHP在設(shè)計(jì)時(shí)就沒有考慮BOM的問題,不會(huì)忽略UTF-8編碼的文件開頭BOM的那三個(gè)字符,會(huì)把BOM作為該文件開頭正文的一部分。由于必須在<?或者<?php后面的代碼才會(huì)作為PHP代碼執(zhí)行,所以將會(huì)造成在頁(yè)面上輸出這三個(gè)字符,顯示效果就要看瀏覽器了,一般是一個(gè)空行或是一個(gè)亂碼。由于在html一開頭有這3個(gè)字符的存在,即使頁(yè)面的 top padding 設(shè)置為0,也無(wú)法讓整個(gè)網(wǎng)頁(yè)緊貼瀏覽器頂部。由于受COOKIE送出機(jī)制的限制,在這些文件開頭已經(jīng)有BOM的文件中,COOKIE無(wú)法送出(因?yàn)樵?COOKIE送出前PHP已經(jīng)送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實(shí)現(xiàn)的功能全部無(wú)效。
解決辦法:
在編輯、更改任何文本文件時(shí),請(qǐng)務(wù)必使用不會(huì)亂加BOM的編輯器。Linux下的編輯器應(yīng)該都沒有這個(gè)問題。WINDOWS下,請(qǐng)勿使用記事本等編輯器。推薦的編輯器是:
Editplus 2.12版本以上;
EmEditor;
UltraEdit(需要取消‘添加BOM'的相關(guān)選項(xiàng));
Dreamweaver(需要取消‘添加BOM'的相關(guān)選項(xiàng));
Notepad(需要進(jìn)行“轉(zhuǎn)換為不帶BOM的UTF-8”)等。
對(duì)于已經(jīng)添加了BOM的文件,要取消的話,可以用以上編輯器另存一次。(Editplus需要先另存為gb,再另存為UTF-8。Dreamweaver在”頁(yè)面屬性“的 “包含Unicode 簽名(BOM)”取消即可)
關(guān)于BOM header的解釋如下:
通常情況下,使用Windows系統(tǒng)自帶的記事本程序編寫網(wǎng)頁(yè)程序,但在編寫或修改php博客系統(tǒng)代碼后,進(jìn)行調(diào)試時(shí)總是會(huì)出現(xiàn)如同以下幾點(diǎn)問題:
–不能登入或者不能登出;
–頁(yè)頂出現(xiàn)一條空白;
–頁(yè)頂出現(xiàn)錯(cuò)誤警告;
–其它不正常的情況。
分析原因:
由于使用UTF-8編碼,在編寫或修改代碼后都保存為utf-8編碼格式。雖然現(xiàn)在幾乎所有的文本編輯軟件都可以顯示并編輯UTF-8編碼的文件,但是很遺憾的是其中很多軟件的表現(xiàn)并不理想。
類 似WINDOWS自帶的記事本等軟件,在保存一個(gè)以UTF-8編碼的文件時(shí),會(huì)在文件開始的地方插入三個(gè)不可見的字符(_0xEF _0xBB _0xBF,即BOM——Byte Order Mark)。它是一串隱藏的字符,用于讓記事本等編輯器識(shí)別這個(gè)文件是否以UTF-8編碼。對(duì)于一般的文件,這樣并不會(huì)產(chǎn)生什么麻煩。但對(duì)于 PHP來(lái)說(shuō),PHP在設(shè)計(jì)時(shí)就沒有考慮BOM的問題,不會(huì)忽略UTF-8編碼的文件開頭BOM的那三個(gè)字符,會(huì)把BOM作為該文件開頭正文的一部分。由于必須在<?或者<?php后面的代碼才會(huì)作為PHP代碼執(zhí)行,所以將會(huì)造成在頁(yè)面上輸出這三個(gè)字符,顯示效果就要看瀏覽器了,一般是一個(gè)空行或是一個(gè)亂碼。由于在html一開頭有這3個(gè)字符的存在,即使頁(yè)面的 top padding 設(shè)置為0,也無(wú)法讓整個(gè)網(wǎng)頁(yè)緊貼瀏覽器頂部。由于受COOKIE送出機(jī)制的限制,在這些文件開頭已經(jīng)有BOM的文件中,COOKIE無(wú)法送出(因?yàn)樵?COOKIE送出前PHP已經(jīng)送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實(shí)現(xiàn)的功能全部無(wú)效。
解決辦法:
在編輯、更改任何文本文件時(shí),請(qǐng)務(wù)必使用不會(huì)亂加BOM的編輯器。Linux下的編輯器應(yīng)該都沒有這個(gè)問題。WINDOWS下,請(qǐng)勿使用記事本等編輯器。推薦的編輯器是:
Editplus 2.12版本以上;
EmEditor;
UltraEdit(需要取消‘添加BOM'的相關(guān)選項(xiàng));
Dreamweaver(需要取消‘添加BOM'的相關(guān)選項(xiàng));
Notepad(需要進(jìn)行“轉(zhuǎn)換為不帶BOM的UTF-8”)等。
對(duì)于已經(jīng)添加了BOM的文件,要取消的話,可以用以上編輯器另存一次。(Editplus需要先另存為gb,再另存為UTF-8。Dreamweaver在”頁(yè)面屬性“的 “包含Unicode 簽名(BOM)”取消即可)
相關(guān)文章
PHP 5.0創(chuàng)建圖形的實(shí)用方法完整篇
2008-01-01
php連接Access數(shù)據(jù)庫(kù)錯(cuò)誤及解決方法
前二天把一個(gè)asp+access的網(wǎng)站改成php+access的,在連連數(shù)據(jù)庫(kù)時(shí)可真讓我狠狠的郁悶了一把,通過(guò)百度了大量的相關(guān)文章終于解決了2013-06-06
php的mssql數(shù)據(jù)庫(kù)連接類實(shí)例
這篇文章主要介紹了php的mssql數(shù)據(jù)庫(kù)連接類,以一個(gè)類實(shí)例的形式演示了PHP實(shí)現(xiàn)針對(duì)mssql數(shù)據(jù)庫(kù)的各種常用操作方法,包括對(duì)數(shù)據(jù)庫(kù)的連接與增刪改查等操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-11
PHP imagecreatefrombmp 從BMP文件或URL新建一圖像
大家都知道php GD庫(kù)可方便的從URL新建一圖像, GD中有imagecreatefromjpeg(),imagecreatefromPNG()....等2012-07-07

