欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

PHP5中file_get_contents函數(shù)獲取帶BOM的utf-8文件內(nèi)容時需注意

2017-07-26 14:33:10 3188瀏覽

PHP5中的file_get_contents函數(shù)獲取文件內(nèi)容,實(shí)際是按二進(jìn)制來讀取的,所以,當(dāng)你用file_get_contents去獲取一個帶BOM的UTF-8文件時,它并不會把UTF-8的BOM去掉,當(dāng)你把讀取的內(nèi)容當(dāng)作文本內(nèi)容來進(jìn)行一些操作時,可能會發(fā)生一些意想不到的結(jié)果。這并不能算作一個BUG,因?yàn)閒ile_get_contents函數(shù)讀取文件的時候,是按二進(jìn)制來讀取的,讀取到的內(nèi)容是包含BOM的,而用戶操作的時候,想當(dāng)然的以為讀取到的內(nèi)容是不包含BOM的文本內(nèi)容(如用記事本打開后看到的內(nèi)容),因?yàn)锽OM在編輯軟件中是不可見的,只有在十六進(jìn)制模式下才可以看見,問題也就出在這,實(shí)際上是由于“操作不統(tǒng)一”造成的。


當(dāng)對UTF-8編碼的文件進(jìn)行操作時,如果要把讀取的內(nèi)容當(dāng)作文本內(nèi)容來處理,最好先對BOM進(jìn)行一些處理,這個問題在PHP6中得到了解決(可以設(shè)置文本/二進(jìn)制讀取模式),有興趣的朋友可以自己查找PHP6的手冊。


一個較簡單的解決方法:

 

或者用正則來處理:

 

 

什么是BOM?

BOM是Byte Order Mark的縮寫,即字節(jié)順序標(biāo)記,它是插入到UTF-8,UTF-16或UTF-32編碼的Unicode文件開頭的特殊標(biāo)記,用來標(biāo)識Unicode文件的編碼類型。


幾種編碼對應(yīng)的BOM:

對于UTF-8編碼的文件而言,BOM標(biāo)記是可有可無的,Windows自帶的記事本文件在保存為UTF-8編碼時,會自動加上BOM,現(xiàn)在一些編輯軟件,可以在保存為UTF-8編碼時可以選擇是否帶BOM保存。

 

對于PHP文件,在使用UTF-8編碼時,最好都不要BOM保存。因?yàn)楫?dāng)你使用include/require/include_once/require_once這些函數(shù)去包含一個帶BOM的文件時,你得到的網(wǎng)頁,在某些兼容性不是很好的瀏覽器下,你會發(fā)現(xiàn)你的網(wǎng)頁的實(shí)際顯示效果跟預(yù)期的有細(xì)微的差別。

標(biāo)簽: 扣丁學(xué)堂

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部