1. 程式人生 > >php include 語句包含文件時,瀏覽器多出換行

php include 語句包含文件時,瀏覽器多出換行

空格 換行 多與輸出

今天在做一個項目時候,用include語句包含文件。在雲服務器上測試正常,在虛擬主機上總是多了莫名奇妙的換行符或者空格符。問題如下:技術分享圖片
經過排查發現問題出現在包含文件的頁面編碼上:被包含文件的編碼是 utf-8+bom編碼方式存儲。將文件轉化成utf-8無bom的編碼格式就好;
下面此次問題排查中學習到的東西,總結如下:

1.什麽是BOM?

BOM是用來判斷文本文件是哪一種Unicode編碼的標記,其本身是一個Unicode字符("\uFEFF"),位於文本文件頭部。UTF-8實際上包含兩種格式:UTF-8 無BOM 類型 與 UTF-8 有BOM 類型。題主剛好使用的是有bom的的類型。事實上在UTF-16 UTF-32中同樣分帶有BOM及無BOM兩種.

2.存在的問題?

BOM實際上是非常有用的前綴。但是在服務器點對點溝通解析或者網頁展示中某些情況下卻是多余或者說是會帶來“麻煩”的。例如會在頁頭增加如下所示的亂碼字符:”“鍩?”

1.例如我們把幾個JS文件合並成一個文件後,如果文件中間含有BOM字符,就會導致瀏覽器JS語法錯誤。

2.PHP就不能識別bom頭,PHP並不會忽略BOM,所以在讀取、包含或者引用這些文件時,會把BOM作為該文件開頭正文的一部分。根據嵌入式語言的特點,這串字符將被直接執行(顯示)出來。由此造成即使頁面的 top padding 設置為0,也無法讓整個網頁緊貼瀏覽器頂部,因為在html一開頭有這3個字符呢!

3文件編碼轉化方法

我使用editplus編輯器進行轉化,具體如下,選文檔(Document)菜單——文件編碼(File encoding)——批量轉換編碼(File encoding multiple),選中全部文件後轉碼,然後再全部保存。

擴充-解決php輸出時出現多余的空格或者換行

1.要查清自己本身有沒有echo 或者exit空格或者換行,
2.一定要保證php文件裏<?php ?>標簽外沒有多余的回車,換行。如果是純粹的php腳本文件,請刪除腳本後面結束標記
3.這些都排查了之後,如果是utf8編碼的文件,還會輸出一個多余的空格回車。做xml傳輸時經常死在這多余的空白上面。這是由於BOM文件頭造成的。另存為無BOM的文件即可。

php include 語句包含文件時,瀏覽器多出換行