您好,登錄后才能下訂單哦!
今天在做一個項目時候,用include語句包含文件。在云服務器上測試正常,在虛擬主機上總是多了莫名奇妙的換行符或者空格符。問題如下:
經過排查發現問題出現在包含文件的頁面編碼上:被包含文件的編碼是 utf-8+bom編碼方式存儲。將文件轉化成utf-8無bom的編碼格式就好;
下面此次問題排查中學習到的東西,總結如下:
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的文件即可。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。