下面摘自??
http://xiushen.com/blog/read.php/114.htm ,說明了BOM的存在對PHP腳本的影響
如果您在修改任何PHP文件后發(fā)生:
??* 不能登入或者不能登出;
??* 頁頂出現(xiàn)一條空白;
??* 頁頂出現(xiàn)錯誤警告;
??* 其它不正常的情況。
則多半是編輯器的問題。
本程序采用UTF-8編碼。現(xiàn)在幾乎所有的文本編輯軟件都可以顯示并編輯UTF-8編碼的文件。但是很遺憾,其中很多軟件的表現(xiàn)并不理想。
類似WINDOWS自帶的記事本等軟件,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用于讓記事本等編輯器識別這個文件是否以UTF-8編碼。對于一般的文件,這樣并不會產(chǎn)生什么麻煩。但對于 PHP來說,BOM是個大麻煩。
PHP并不會忽略BOM,所以在讀取、包含或者引用這些文件時,會把BOM作為該文件開頭正文的一部分。根據(jù)嵌入式語言的特點,這串字符將被直接執(zhí)行(顯示)出來。由此造成即使頁面的 top padding 設(shè)置為0,也無法讓整個網(wǎng)頁緊貼瀏覽器頂部,因為在html一開頭有這3個字符呢!
最大的麻煩還不是這個。受COOKIE送出機制的限制,在這些文件開頭已經(jīng)有BOM的文件中,COOKIE無法送出(因為在COOKIE送出前PHP已經(jīng)送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實現(xiàn)的功能全部無效。
因此,在編輯、更改任何文本文件時,請務(wù)必使用不會亂加BOM的編輯器。Linux下的編輯器應(yīng)該都沒有這個問題。WINDOWS下,請勿使用記事本等編輯器。推薦的編輯器是: Editplus 2.12版本以上; EmEditor; UltraEdit(需要取消‘添加BOM’的相關(guān)選項); Dreamweaver(需要取消‘添加BOM’的相關(guān)選項)等。
對于已經(jīng)添加了BOM的文件,要取消的話,可以用以上編輯器另存一次。(Editplus需要先另存為gb,再另存為UTF-8。)
下面一段摘自
http://forums.mozine.org/index.php?showtopic=556 ,說明了BOM對 mozilla 插件制作過程中對BOM的要求:
選擇編輯器
要編輯中文語言檔案,你必需要有合適的編輯器。Mozilla 有些特定的文件格式要求,所以你的編輯器最少要有以下的功能:
1. 支援 UTF-8
文字檔型
2. 可選擇文件是否要有萬國碼檔案
簽名 BOM (Byte Order Mark, U+FEFF)
3. 支援逸出萬國碼 (escaped Unicode,\uXXXX) 的文字編碼
可惜的是在 Windows 2000 與 XP 上的 Notepad 沒有第二項的支持,所以你必須用其它的編輯器。以下是一些建議:
1. UniRed : freeware,很好用
2. SC UniPad: 測試版有字元數(shù)限制,正式版
太貴了,功能好但可能不適用。
這些程序的使用請參見 Mozilla 地方化的工具。
2. .dtd 文件是 UTF-8 格式,注意 .dtd 文件不得有 BOM 開頭字元
總結(jié):自由軟件領(lǐng)域,好像對BOM都非常不適應(yīng),而svn的作者可能是覺得沒必要
處理BOM也可以正確處理UTF-8文檔,所以就這么干了。只是比較郁悶的是,我無法使用我最愛的編輯器了:記事本