PHP 編程請(qǐng)選擇正確的文本編輯軟件
更新時(shí)間:2006年12月21日 00:00:00 作者:
如果您在修改任何PHP文件后發(fā)生:
不能登入或者不能登出;
頁(yè)頂出現(xiàn)一條空白;
頁(yè)頂出現(xiàn)錯(cuò)誤警告;
其它不正常的情況。
則多半是編輯器的問(wèn)題。
本程序采用UTF-8編碼?,F(xiàn)在幾乎所有的文本編輯軟件都可以顯示并編輯UTF-8編碼的文件。但是很遺憾,其中很多軟件的表現(xiàn)并不理想。
類似WINDOWS自帶的記事本等軟件,在保存一個(gè)以UTF-8編碼的文件時(shí),會(huì)在文件開(kāi)始的地方插入三個(gè)不可見(jiàn)的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用于讓記事本等編輯器識(shí)別這個(gè)文件是否以UTF-8編碼。對(duì)于一般的文件,這樣并不會(huì)產(chǎn)生什么麻煩。但對(duì)于PHP來(lái)說(shuō),BOM是個(gè)大麻煩。
PHP并不會(huì)忽略BOM,所以在讀取、包含或者引用這些文件時(shí),會(huì)把BOM作為該文件開(kāi)頭正文的一部分。根據(jù)嵌入式語(yǔ)言的特點(diǎn),這串字符將被直接執(zhí)行(顯示)出來(lái)。由此造成即使頁(yè)面的 top padding 設(shè)置為0,也無(wú)法讓整個(gè)網(wǎng)頁(yè)緊貼瀏覽器頂部,因?yàn)樵趆tml一開(kāi)頭有這3個(gè)字符呢!
最大的麻煩還不是這個(gè)。受COOKIE送出機(jī)制的限制,在這些文件開(kāi)頭已經(jīng)有BOM的文件中,COOKIE無(wú)法送出(因?yàn)樵贑OOKIE送出前PHP已經(jīng)送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實(shí)現(xiàn)的功能全部無(wú)效。
因此,在編輯、更改任何文本文件時(shí),請(qǐng)務(wù)必使用不會(huì)亂加BOM的編輯器。Linux下的編輯器應(yīng)該都沒(méi)有這個(gè)問(wèn)題。WINDOWS下,請(qǐng)勿使用記事本等編輯器。推薦的編輯器是:
Editplus 2.12版本以上;
EmEditor;
UltraEdit(需要取消‘添加BOM'的相關(guān)選項(xiàng));
Dreamweaver(需要取消‘添加BOM'的相關(guān)選項(xiàng))
等。
對(duì)于已經(jīng)添加了BOM的文件,要取消的話,可以用以上編輯器另存一次。(Editplus需要先另存為gb,再另存為UTF-8)
不能登入或者不能登出;
頁(yè)頂出現(xiàn)一條空白;
頁(yè)頂出現(xiàn)錯(cuò)誤警告;
其它不正常的情況。
則多半是編輯器的問(wèn)題。
本程序采用UTF-8編碼?,F(xiàn)在幾乎所有的文本編輯軟件都可以顯示并編輯UTF-8編碼的文件。但是很遺憾,其中很多軟件的表現(xiàn)并不理想。
類似WINDOWS自帶的記事本等軟件,在保存一個(gè)以UTF-8編碼的文件時(shí),會(huì)在文件開(kāi)始的地方插入三個(gè)不可見(jiàn)的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用于讓記事本等編輯器識(shí)別這個(gè)文件是否以UTF-8編碼。對(duì)于一般的文件,這樣并不會(huì)產(chǎn)生什么麻煩。但對(duì)于PHP來(lái)說(shuō),BOM是個(gè)大麻煩。
PHP并不會(huì)忽略BOM,所以在讀取、包含或者引用這些文件時(shí),會(huì)把BOM作為該文件開(kāi)頭正文的一部分。根據(jù)嵌入式語(yǔ)言的特點(diǎn),這串字符將被直接執(zhí)行(顯示)出來(lái)。由此造成即使頁(yè)面的 top padding 設(shè)置為0,也無(wú)法讓整個(gè)網(wǎng)頁(yè)緊貼瀏覽器頂部,因?yàn)樵趆tml一開(kāi)頭有這3個(gè)字符呢!
最大的麻煩還不是這個(gè)。受COOKIE送出機(jī)制的限制,在這些文件開(kāi)頭已經(jīng)有BOM的文件中,COOKIE無(wú)法送出(因?yàn)樵贑OOKIE送出前PHP已經(jīng)送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實(shí)現(xiàn)的功能全部無(wú)效。
因此,在編輯、更改任何文本文件時(shí),請(qǐng)務(wù)必使用不會(huì)亂加BOM的編輯器。Linux下的編輯器應(yīng)該都沒(méi)有這個(gè)問(wèn)題。WINDOWS下,請(qǐng)勿使用記事本等編輯器。推薦的編輯器是:
Editplus 2.12版本以上;
EmEditor;
UltraEdit(需要取消‘添加BOM'的相關(guān)選項(xiàng));
Dreamweaver(需要取消‘添加BOM'的相關(guān)選項(xiàng))
等。
對(duì)于已經(jīng)添加了BOM的文件,要取消的話,可以用以上編輯器另存一次。(Editplus需要先另存為gb,再另存為UTF-8)
相關(guān)文章
phpword插件導(dǎo)出word文件時(shí)中文亂碼問(wèn)題處理方案
PHPWord是一個(gè)可以把相關(guān)文件生成word文檔的插件了,但由于是老外開(kāi)發(fā)的對(duì)于gbk支持不好,所以我們?cè)趯?dǎo)出帶有中文的word時(shí)會(huì)出現(xiàn)亂碼問(wèn)題,下面本文就PHPWord中文亂碼問(wèn)題介紹一些解決方法。2014-08-08
thinkphp jquery實(shí)現(xiàn)圖片上傳和預(yù)覽效果
這篇文章主要為大家詳細(xì)介紹了thinkphp上傳圖片功能,和jquery預(yù)覽圖片效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
shopex中集成的站長(zhǎng)統(tǒng)計(jì)功能的代碼簡(jiǎn)單分析
shopex中集成了一鍵開(kāi)啟站長(zhǎng)統(tǒng)計(jì)功能,而無(wú)需去CNZZ注冊(cè),在phpcms,phpwind等中也都有類似的功能,下面是對(duì)這個(gè)功能的簡(jiǎn)單分析,以后也可以偷偷用在自己的網(wǎng)站中,呵呵。2011-08-08
php Illegal string offset 'name&apo
這篇文章主要介紹了php Illegal string offset 'name'問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
linux下 C語(yǔ)言對(duì) php 擴(kuò)展
linux C語(yǔ)言對(duì) php 擴(kuò)展的設(shè)置技巧2008-12-12
php5.2的curl-bug 服務(wù)器被php進(jìn)程卡死問(wèn)題排查
這篇文章主要介紹了php5.2的curl-bug 服務(wù)器被php進(jìn)程卡死問(wèn)題排查,需要的朋友可以參考下2016-09-09
PHP JSAPI調(diào)支付API實(shí)現(xiàn)微信支付功能詳解
本人最近做了微信支付開(kāi)發(fā),是第一次接觸,其中走了很多彎路,遇到的問(wèn)題也很多。為了讓和我一樣的新人不再遇到類似的問(wèn)題,我把我的開(kāi)發(fā)步驟和問(wèn)題寫出來(lái)以供參考,這篇文章主要介紹了PHP JSAPI調(diào)支付API實(shí)現(xiàn)微信支付功能2022-11-11
基于Surprise協(xié)同過(guò)濾實(shí)現(xiàn)短視頻推薦方法示例
這篇文章主要為大家介紹了基于Surprise協(xié)同過(guò)濾實(shí)現(xiàn)短視頻推薦方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

