PHP生成HTML頁面頂部出現空白部分(#65279字符)的解決辦法

最近項目使用到ThinkPHP框架,其中一個頁面頂部老是一小段空白。php

以下圖所示:html

並且只會在chrome和edge瀏覽器出現,ff則不會出現這個問題。因爲該頁面是由PHP+HTML模板拼接接,所以前後排查了html文件、JavaScript文件、php文件。均未發現問題。chrome

使用chrome F12發現空白處是一串&#65279字符。經過搜索,瞭解到這原來是UTF-8的編碼問題。windows

我使用的編碼是UTF-8 + BOM,這種編碼方式通常會在windows操做系統中出現,好比WINDOWS自帶的記事本等軟件,在保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隱藏的字符,用於讓記事本等編輯器識別這個文件是否以UTF-8編碼。對於通常的文件,這樣並不會產生什麼麻煩。但對於 PHP來講,BOM是個大麻煩。由於PHP並不會忽略BOM,因此在讀取、包含或者引用這些文件時,會把BOM做爲該文件開頭正文的一部分。根據嵌入式語言的特色,這串字符將被直接執行(顯示)出來。瀏覽器

知道問題的緣由以後,便很好解決了。我使用的是 phpstorm,在菜單欄文件裏有「remove bom」選項,能夠直接存爲UTF-8無BOM模式。若是使用notepad++或其餘工具的也能夠選擇「另存爲」,而後在編碼那兒選擇「UTF-8無BOM」便可解決。框架

相關文章
相關標籤/搜索