類似WINDOWS自帶的記事本等軟件馅闽,在保存一個以UTF-8編碼的文件時落剪,會在文件開始的地方插入三個不可見
的字符(0xEF 0xBB 0xBF餐屎,即BOM)输玷。它是一串隱藏的字符队丝,用于讓記事本等編輯器識別這個文件是否以
UTF-8編碼。對于一般的文件欲鹏,這樣并不會產(chǎn)生什么麻煩炭玫。但對于 PHP來說,BOM是個大麻煩貌虾。
PHP并不會忽略BOM,所以在讀取裙犹、包含或者引用這些文件時尽狠,會把BOM作為該文件開頭正文的一部分。
根據(jù)嵌入式語言的特點叶圃,這串字符將被直接執(zhí)行(顯示)出來袄膏。由此造成即使頁面的 top padding 設(shè)置為0
,也無法讓整個網(wǎng)頁緊貼瀏覽器頂部掺冠,因為在html一開頭有這3個字符沉馆。同時也會造成中文亂碼的問題。
window編輯器如果保存為utf8文件就會幫你加上BOM頭德崭,以告訴其他編輯器以utf8來顯示字符 斥黑,
但是在網(wǎng)頁上并不需要添加BOM頭識別,因為網(wǎng)頁上可以使用 head頭指定charset=utf8告訴瀏覽器用utf8
來解釋眉厨。但是你用window自動的編輯器編輯,然后顯示在網(wǎng)頁上這樣就會顯示出0xEF 0xBB 0xBF這3個字
符锌奴。
這樣網(wǎng)頁上就需要去除0xEF 0xBB 0xBF,可以在編輯器中選擇不帶BOM的編碼憾股,這樣就可以去除了鹿蜀,也就解
決了PHP在使用UTF-8編碼出現(xiàn)中文亂碼的問題。
如:Notepad++中服球,如果出現(xiàn)中文亂碼茴恰,解決辦法:【編碼】-->【轉(zhuǎn)為 UTF-8無 BOM 編碼格式】
(一定要選擇【轉(zhuǎn)為……編碼格式】,不能直接選擇【以……格式編碼】)