近年來,隨著網頁的發展和多語言環境下代碼的交流,BOM(Byte Order Mark)成為了一個大家需要關注的問題。就拿php來說,BOM微小卻十分關鍵。其實,很多人對BOM的不了解,也許已經在項目中帶來了許多不必要的麻煩。
一、什么是BOM?
BOM是指位于UTF-8編碼文件的開頭的幾個字節,通常有“EF BB BF”這三個字符,使用一些特殊的工具或編輯器可看到。BOM在UTF-8編碼中表示“Byte Order Mark”,即字節序標記,用于區分 Unicode 字節序。
二、BOM對PHP的影響
當一個擁有BOM頭的php文件在編譯時,BOM會被視為PHP腳本中的語句,會導致這個文件在運行時的異常,例如:
```
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\test.php:1) in C:\wamp\www\test.php on line 2
```
這種錯誤通常出現在文件頭存在不可被識別的字符的時候。特別是在使用header或者cookie在header發送之前或者產生輸出之前使用的時候。
三、如何處理BOM?
1. 修改編輯器設置
通常可以在編輯器的設置中關閉BOM的自動添加功能,例如:Sublime Text2中,選擇File->Save with Encoding->UTF-8,保存時就能避免BOM的自動添加;PHPStorm中,打開File->Settings->Editor->Code Style->BOM,設置為UTF-8 Without BOM。
2. 批量匹配替換
對于大型項目,可能需要對所有的PHP文件進行 BOM 替換,通常可以使用一些批量修改工具,例如:Notepad++,選擇Edit->EOL Conversion->Remove BOM,便可去除當前文件的BOM;PHPStorm中,右鍵選擇所選文件所在的根目錄>Replace in Path,輸入要替換的目標字符集為 UTF-8 with BOM ,替換為 UTF-8 便可。
四、總結
在日常編寫PHP代碼時,避免BOM對文件的影響,甚至直接去除帶有BOM頭的文件,比預防修復要方便得多。因此,正確的處理UTF-8編碼下的BOM問題是非常必要的,我們應該盡早養成“避免帶有BOM頭的文件”的習慣,同時統一項目中字符編碼,避免不同字符編碼帶來的不必要麻煩。
網站導航
- zblogPHP模板zbpkf
- zblog免費模板zblogfree
- zblog模板學習zblogxuexi
- zblogPHP仿站zbpfang