『壹』 php程序UTF8無BOM的問題,請高手賜教
第一,BOM是不會影響你顯示的繹碼的……
如果你手動繹碼後,能正常 。那是因為你沒在你的文件指定字元串編碼
header("Content-type:text/html;charset=utf8");在PHP文件開頭加上這句
『貳』 什麼是BOM頭,及PHP解決辦法
類似WINDOWS自帶的記事本等軟體,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字元(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字元,用於讓記事本等編輯器識別這個文件是否以UTF-8編碼。對於一般的文件,這樣並不會產生什麼麻煩。但對於 PHP來說,BOM是個大麻煩。
PHP並不會忽略BOM,所以在讀取、包含或者引用這些文件時,會把BOM作為該文件開頭正文的一部分。根據嵌入式語言的特點,這串字元將被直接執行(顯示)出來。由此造成即使頁面的 top padding 設置為0,也無法讓整個網頁緊貼瀏覽器頂部,因為在html一開頭有這3個字元呢!
window編輯器如果保存為utf8文件就會幫你加上BOM頭,以告訴其他編輯器以utf8來顯示字元
但是在網頁上並不需要添加BOM頭識別,因為網頁上可以使用 head頭 指定charset=utf8告訴瀏覽器用utf8來解釋.但是你用window自動的編輯器,編輯,然後有顯示在網頁上這樣就會顯示出0xEF 0xBB 0xBF這3個字元。
這樣網頁上就需要去除0xEF 0xBB 0xBF,可以使用editplus 選擇不帶BOM的編碼,這樣就可以去除了
php去除BOM頭:
復制代碼
function rmBOM($string)
{
if (substr($string, 0,3) == pack('CCC',0xef,0xbb,0xbf))
{
$string = substr($string, 3);
}
return $string;
}