php 檔案 UTF 8有BOM和無BOM的區別

2021-09-21 05:49:22 字數 740 閱讀 9328

概念:

在ucs 編碼中有乙個叫做」zero width no-break space「的字元,它的編碼是feff。而fffe在ucs中是不存在的字元,所以不應該出現在實際傳輸中。

ucs規範建議我們在傳輸位元組流前,先傳輸 字元」zero width no-break space「。

如果接收者收到feff,就表明這個位元組流是大字節序的;如果收到fffe,就表明這個位元組流是小字節序的。因此字元」zero width no-break space「又被稱作bom。

作用utf-8不需要bom來表明位元組順序,但可以用bom來表明編碼方式。字元」zero width no-break space「的utf-8編碼是ef bb bf。所以如果接收者收到以ef bb bf開頭的位元組流,就知道這是utf-8編碼了。

對php的影響

php在設計時就沒有考慮bom的問題,也就是說他不會忽略utf-8編碼的檔案開頭bom的那三個字元。

受cookie送出機制的限制,在這些檔案開頭已經有bom的檔案中,cookie無法送出(因為在cookie送出前php已經送出了檔案頭),也就是說,凡是不能夠在執行之前進行輸出的**都將無效

解決方法

通常把檔案儲存為不帶bom的utf-8檔案

2、不能使用記事本編輯** ,否則可能會出現莫名的錯誤,需要使用php專用的編輯器修改;

3、再確認你的檔案編碼是不是 utf-8 無bom格式(用記事本編輯儲存的時候莫名其妙編碼變為其他的),不是的話用編輯器改為utf-8 無bom

UTF 8有BOM和無BOM的區別

概念 在ucs 編碼中有乙個叫做 zero width no break space 的字元,它的編碼是feff。而fffe在ucs中是不存在的字元,所以不應該出現在實際傳輸中。ucs規範建議我們在傳輸位元組流前,先傳輸 字元 zero width no break space 如果接收者收到fef...

帶BOM的UTF 8和無BOM 的UTF 8的區別

utf 8 不需要 bom,儘管 unicode 標準允許在 utf 8 中使用 bom。所以不含 bom 的 utf 8 才是標準形式,在 utf 8 檔案中放置 bom 主要是微軟的習慣 順便提一下 把 utf 16 le 稱作 unicode 而又不詳細說明,這也是微軟的習慣 bom byte...

utf 8與utf 8無BOM的區別

utf 8 8 bit unicode transformation format 是一種針對unicode的可變長度字元編碼,又稱萬國碼。bom byte order mark,位元組序標記 utf 8不需要bom來表明位元組順序,但可以用bom來表明編碼方式。字元 zero width no b...