今天在做一個項目時候,用include語句包含文件。在云服務器上測試正常,在虛擬主機上總是多了莫名奇妙的換行符或者空格符。問題如下:
經過排查發現問題出現在包含文件的頁面編碼上:被包含文件的編碼是 utf-8+bom編碼方式存儲。將文件轉化成utf-8無bom的編碼格式就好;
下面此次問題排查中學習到的東西,總結如下:
成都創新互聯是專業的漳浦網站建設公司,漳浦接單;提供成都做網站、網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行漳浦網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
BOM是用來判斷文本文件是哪一種Unicode編碼的標記,其本身是一個Unicode字符("\uFEFF"),位于文本文件頭部。UTF-8實際上包含兩種格式:UTF-8 無BOM 類型 與 UTF-8 有BOM 類型。題主剛好使用的是有bom的的類型。事實上在UTF-16 UTF-32中同樣分帶有BOM及無BOM兩種.
BOM實際上是非常有用的前綴。但是在服務器點對點溝通解析或者網頁展示中某些情況下卻是多余或者說是會帶來“麻煩”的。例如會在頁頭增加如下所示的亂碼字符:”“锘?”
1.例如我們把幾個JS文件合并成一個文件后,如果文件中間含有BOM字符,就會導致瀏覽器JS語法錯誤。
2.PHP就不能識別bom頭,PHP并不會忽略BOM,所以在讀取、包含或者引用這些文件時,會把BOM作為該文件開頭正文的一部分。根據嵌入式語言的特點,這串字符將被直接執行(顯示)出來。由此造成即使頁面的 top padding 設置為0,也無法讓整個網頁緊貼瀏覽器頂部,因為在html一開頭有這3個字符呢!
我使用editplus編輯器進行轉化,具體如下,選文檔(Document)菜單——文件編碼(File encoding)——批量轉換編碼(File encoding multiple),選中全部文件后轉碼,然后再全部保存。
1.要查清自己本身有沒有echo 或者exit空格或者換行,
2.一定要保證php文件里<?php ?>標簽外沒有多余的回車,換行。如果是純粹的php腳本文件,請刪除腳本后面結束標記
3.這些都排查了之后,如果是utf8編碼的文件,還會輸出一個多余的空格回車。做xml傳輸時經常死在這多余的空白上面。這是由于BOM文件頭造成的。另存為無BOM的文件即可。
新聞標題:phpinclude語句包含文件時,瀏覽器多出換行
本文路徑:http://www.js-pz168.com/article2/gieioc.html
成都網站建設公司_創新互聯,為您提供網站建設、網站營銷、網站改版、服務器托管、全網營銷推廣、網站內鏈
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯