UTF 8 BOM對PHP的影響

2022-03-07 09:06:03 字數 843 閱讀 9569

今天在用notepad++寫**時 載入乙個frameset框架模版後 在頁面上一直不顯示該頁面,檢視原始碼後都正常。然後索性把裡面東西全刪掉 隨便寫了幾個測試文字可以正常顯示。

折騰了好長時間,最後偶然看見了有兩個控制模版的php檔案不一樣 乙個是以utf-8無bom編碼另乙個是utf-8格式編碼,試著就把那個utf-8格式的改成了utf-8無bom格式了。然後儲存,開啟firefox,之前不顯示的frameset模版居然顯示了。然後又在chrome下試了試 還是不顯示,然後就想到了是不是還有其他php檔案的格式沒有轉成無bom格式。查了下把所有的凡是utf-8的都改成了utf-8無bom格式 儲存後chrome也可以正常顯示了。終於松了一口氣。

utf-8 編碼的檔案可以分為 no bom 和 bom 兩種格式。

何謂bom? "ef bb bf" 這三個位元組就叫bom,bom的全稱叫做"byte order mard"。在utf-8檔案中常用bom來表明這個檔案是utf-8檔案,而bom的本意實在utf16中用來表示高低位元組序列的。在位元組流之前有 bom表示採用低位元組序列(低位元組在前面),而utf8不用考慮位元組序列,所以其實有無bom都可以。utf-8以位元組為編碼單元,沒有位元組序的問題。 utf-16以兩個位元組為編碼單元,在解釋乙個utf-16文字前,首先要弄清楚每個編碼單元的位元組序。例如收到乙個「奎」的unicode編碼是 594e,「乙」的unicode編碼是4e59。如果我們收到utf-16位元組流「594e」,那麼這是 「奎」還是「乙」?

如果檔案保 存時,選擇了使用 bom,會使頁面顯示不正常。一般來說,php是不支援有bom的,php檔案應該儲存為utf-8無bom型別

所以在儲存 utf8 編碼php檔案時,不要使用 bom。

UTF8 bom問題的研究

當儲存文字檔案為utf 8 bom時,在內容的開頭會多出3個位元組 ef bb bf 它是用來標示這個文件就是utf 8編碼的文件,可以防止文字編輯器編碼解發布錯。但是多出來的3個位元組也會惹些麻煩。例如 session start 在session cookie使用前,不能有任何輸出,空行空格都不...

utf 8與utf 8 bom的區別

在utf 8編碼檔案中bom在檔案頭部,占用三個位元組,用來標識該檔案屬於utf 8編碼,現在已經有很多軟體識別bom頭,但還是有些不能識別bom頭,比如php就不能識別bom頭,這也就是用記事本編輯utf 8編碼的php檔案後,就會報錯的原因。在windows環境下,用記事本開啟任何乙個文字檔案,...

utf8與utf8 bom的區別

utf8與utf8 bom的區別 首先建立檔案1.txt,2.txt,其次利用vim修改2.txt的編碼格式為utf8 bom 去掉utf 8 bom set nobomb 保留utf 8 bom set bomb 最後利用vim xxd顯示文字的十六進製制表示 在vim的命令狀態下,xxd 將當前...