UTF 8檔案的BOM頭的來由及去除方法

2022-07-23 00:33:36 字數 1452 閱讀 8038

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之後擷取從第四個位元組到末尾的切片。因為由切片擷取生成的新切片和原切片共同指向同乙個陣列,所以沒有額外的拷貝,這一點比轉換成字串之...