BOM: Byte Order Mark UTF-8 BOM又叫UTF-8 簽章,其實UTF-8 的BOM對UFT-8沒有作用,是為了支援UTF-16 ,UTF-32才加上的BOM,BOM簽名的意思就是告訴編輯器當前文件採用何種編碼,方便編輯器識別,但是BOM雖然在編輯器中不顯示,但是會產生輸出,就像多了一 個空白行, 如果您在修改任何PHP檔案後發生: 不能登入或不能登出; * 頁頂出現一條空白; * 頁頂出現錯誤警告; 其它不正常的情況。則多半是編輯器的問題。
本程式採用UTF-8編碼。現在幾乎所有的文字編輯軟體都可以顯示並編輯UTF- 8編碼的文件。但很遺憾,其中許多軟體的表現並不理想。類似WINDOWS自帶的記事本等軟體,在保存一個以UTF- 8編碼的檔案時,會在檔案開始的地方插入三個不可見的字元(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符 ,用於讓記事本等編輯器識別這個檔案是否以UTF-8編碼。
對於一般的文件,且不會造成任何麻煩。但對於 PHP來說,BOM是個大麻煩。 PHP不會忽略BOM ,所以在讀取、包含或引用這些文件時,會把BOM當作該文件開頭正文的一部分。根據嵌入式語言的特點,這串字元將會直接執行(顯示)出來。由此造成即使頁面的 top padding 設定為0,也無法讓整個網頁緊貼瀏覽器頂部,因為在html一開頭有這3個字元呢!最大的麻煩還不是這個。受COOKIE送出機制的限制,在 這些檔案開頭已經有BOM的檔案中,COOKIE無法送出(因為在COOKIE送出前PHP已經送出了檔案頭),所以登入和登出功能失效。一切都依賴COOKIE、SE SSION實作的功能全部無效。
因此,並在編輯、變更任何文字檔案時,請務必使用不會亂加BOM的編輯器。 Linux下的編輯器應該都沒有這個問題。 WINDOWS下, 請勿使用記事本等編輯器。建議的編輯器有: Editplus 2.12版本以上; EmEditor; UltraEdit(需要取消『新增BOM』的相關選項); Dreamweaver(需要取消『新增BOM』的相關選項) 等。對於已經新增了BOM的文件,要取消的話,可以用以上編輯器另存一次。 (Editplus需要先另存為gb,再另存為UTF-8。) ,以下是程式解決方案:
[PHP]程式碼
<?php $auto = 1; checkdir('C:\project\weibo'); function checkdir($basedir){ if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if($file{0} == '.') { continue; } if ($file != '.' && $file != '..'){ if (!is_dir($basedir."/".$file)) { echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>"; }else{ $dirname = $basedir."/".$file; checkdir($dirname); } } } closedir($dh); } } function 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 ("<font color=red>BOM found, automatically removed.</font>"); } else { return ("<font color=red>BOM found.</font>"); } } else return ("BOM Not Found."); } function rewrite ($filename, $data) { $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); } ?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。