解釋BOM頭和去掉方法

BOM: Byte Order Mark

什麼是bom頭?

UTF-8 BOM又叫UTF-8 簽名,其實UTF-8 的BOM對UFT-8沒有作用,是爲了支援UTF-16,UTF-32才加上的BOM,BOM簽名的意思就是告訴編輯器當前文件採用何種編碼,方便編輯器識別,但是BOM雖然在編輯器中不顯示,但是會產生輸出,就像多了一個空行

在utf-8編碼文件中BOM在文件頭部,佔用三個字節,用來標示該文件屬於utf-8編碼,現在已經有很多軟件識別bom頭,但是還有些不能識別bom頭,比如PHP就不能識別bom頭,這也是用記事本編輯utf-8編碼後執行就會出錯的原因了。

去掉bom頭的辦法,簡單的是下面兩種:

1、editplus去BOM頭的方法

編輯器調整爲UTF8編碼格式後,保存的文件前面會多出一串隱藏的字符(也即是BOM),用於編輯器識別這個文件是否是以UTF8編碼。
運行Editplus,點擊工具,選擇首選項,選中文件,UTF-8標識選擇 總是刪除簽名,

然後對PHP文件編輯和保存後的PHP文件就是不帶BOM的了。

2、ultraedit去除bom頭辦法

打開文件後,另存爲選項的編碼格式裏選擇(utf-8 無bom頭),確定就ok了

怎麼樣,去掉bom頭很簡單吧


再來一段議論utf8的BOM信息的

BOM是指php文件本身的存儲方式爲帶BOM的UTF-8,普通頁面的中文亂碼方式一般不是由這個原因導致的。

header("Content-type: text/html; charset=utf-8");
這句話控制html輸出頁面的編碼方式,

BOM只有在WINDOWS下采用“記事本”存儲爲UTF-8時纔會有,這個可以用WINHEX把開始的2個字節刪掉。
在dreamweaver裏面編碼設置裏面可以設置是否帶BOM,一般只要php輸出的不是圖片(GDI Stream),BOM都不會導致問題。

GDI Stream如果開頭有了額外的 字符就會顯示爲 紅叉。


類似WINDOWS自帶的記事本等軟件,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB0xBF,即BOM)。它是一串隱藏的字符,用於讓記事本等編輯器識別這個文件是否以UTF-8編碼。對於一般的文件,這樣並不會產生什麼麻煩。但對於PHP來說,BOM是個大麻煩。

  PHP並不會忽略BOM,所以在讀取、包含或者引用這些文件時,會把BOM作爲該文件開頭正文的一部分。根據嵌入式語言的特點,這串字符將被直接執行(顯示)出來。由此造成即使頁面的top padding 設置爲0,也無法讓整個網頁緊貼瀏覽器頂部,因爲在html一開頭有這3個字符呢!

=================================================================================================

window編輯器如果保存爲utf8文件就會幫你加上BOM頭,以告訴其他編輯器以utf8來顯示字符

但是在網頁上並不需要添加BOM頭識別,因爲網頁上可以使用 head頭指定charset=utf8告訴瀏覽器用utf8來解釋.但是你用window自動的編輯器,編輯,然後有顯示在網頁上這樣就會顯示出0xEF0xBB 0xBF這3個字符。

這樣網頁上就需要去除0xEF 0xBB 0xBF,可以使用editplus 選擇不帶BOM的編碼,這樣就可以去除了




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章