1. 什麼是bom頭
在utf-8編碼檔案中bom在檔案頭部,占用三個位元組,用來標識該檔案屬於utf-8編碼,現在已經有很多軟體識別bom頭,但還是有些不能識別bom頭,比如php就不能識別bom頭,這也就是用記事本編輯utf-8編碼的php檔案後,就會報錯的原因。
2. 包含bom標頭檔案的產生
在windows環境下,用記事本開啟任何乙個文字檔案,另存為utf-8格式後,這樣檔案就自動被加上了bom頭資訊。
比較:utf-8(含bom頭)
utf-8(不含bom頭)
從上圖的比較中,可以很明顯的看出,含bom頭的檔案多出三個位元組 efbbbf。
3. bom頭資訊的去除方法
用notepad++開啟檔案,選擇 格式 -> 以utf-8無bom格式編碼,再儲存就行。如下圖:
4. 在php類的專案中,自動處理bom頭資訊(只需要將此檔案放在專案根目錄下,從瀏覽器訪問即可)
<
?php
if(isset($_get['dir']))else
checkdir($basedir);
/*** 遍歷目錄
* @param string $basedir 基礎目錄
*/functioncheckdir($basedir)else}}
closedir($dh);}}
/*** 檢查bom頭
* @param string $filename 檔名
* @param int $auto 是否自動處理,預設自動處理
*/functioncheckbom($filename, $auto =
1)else
}else
return("bom not found.");
}/**
* 重寫檔案
* @param string $filename 需要重寫的檔案
* @param mixed $data 要重寫的資料
*/functionrewrite($filename, $data)
?>
去除 UTF 8 檔案 BOM 頭
bom 全稱是 byte order mark 位元組順序標記 出現在文字檔案頭部,unicode 編碼標準中用於標識檔案是採用哪種格式的編碼。比如 當用記事本儲存乙個以 utf 8 編碼的檔案時,會自動在檔案開始自動插入三個不可見字元 0xef 0xbb 0xbf 但是通常情況下不需要這個頭部來識...
批量清除utf 8檔案的bom頭
問題引發 utf8編碼網頁包含檔案時前面有空行的解決 php if isset get dir else auto 1 checkdir basedir function checkdir basedir else closedir dh function checkbom filename els...
Go語言 讀取帶有BOM頭的UTF8檔案
bom頭是utf8檔案開頭的三個固定取值的位元組,讀檔案的時候如果遇到bom頭需要忽略。在golang裡,比較有效率的方法是用ioutil.readfile,返回byte之後擷取從第四個位元組到末尾的切片。因為由切片擷取生成的新切片和原切片共同指向同乙個陣列,所以沒有額外的拷貝,這一點比轉換成字串之...