在utf-8編碼檔案中BOM在檔案頭部,佔用三個位元組,用來標示該檔案屬於utf-8編碼,現在已經有很多軟體識別bom頭,但是還有些不能識別bom頭,比如PHP就不能識別bom頭,這也是用記事本編輯utf-8編碼後執行就會出錯的原因了。BOM只有在WINDOWS下採用“記事本”儲存為UTF-8時才會有,這個可以用WINHEX把開始的2個位元組刪掉。在dreamweaver裡面編碼設定裡面可以設定是否帶BOM,一般只要php輸出的不是圖片(GDI Stream),BOM都不會導致問題。GDI Stream如果開頭有了額外的 字元就會顯示為 紅叉。
去掉bom頭的辦法,簡單的是下面兩種:
1、editplus去BOM頭的方法
編輯器調整為UTF8編碼格式後,儲存的檔案前面會多出一串隱藏的字元(也即是BOM),用於編輯器識別這個檔案是否是以UTF8編碼。運行Editplus,點擊工具,選擇喜好設定,選中檔案,UTF-8標識選擇 總是刪除簽名,然後對PHP檔案編輯和儲存後的PHP檔案就是不帶BOM的了。
2、ultraedit去除bom頭辦法
開啟檔案後,另存新檔選項的編碼格式裡選擇(utf-8 無bom頭),確定就ok了。
對於PHP程式需要去除Bom頭的也可以使用目錄下的bom.php程式去除。
";}else{$dirname = $basedir."/".$file;checkdir($dirname);}}}//end whileclosedir($dh);}//end if($dh}//end functionfunction checkBOM($filename){global $auto;$contents = file_get_contents($filename);$charset[1] = substr($contents, 0, 1);$charset[2] = substr($contents, 1, 1);$charset[3] = substr($contents, 2, 1);if(ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191){if($auto == 1){$rest = substr($contents, 3);rewrite ($filename, $rest);return "BOM found, automatically removed.";}else{return ("BOM found.");}}else return ("BOM Not Found.");}//end functionfunction rewrite($filename, $data){$filenum = fopen($filename, "w");flock($filenum, LOCK_EX);fwrite($filenum, $data);fclose($filenum);}?>
http://www.bkjia.com/PHPjc/755769.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/755769.htmlTechArticle在utf-8編碼檔案中BOM在檔案頭部,佔用三個位元組,用來標示該檔案屬於utf-8編碼,現在已經有很多軟體識別bom頭,但是還有些不能識別bom頭,...