POST TIME:2017-11-13 00:16
今天突然發(fā)現(xiàn)網(wǎng)站頭部有一條空白,當時我就想肯定css問題了,然后我就用開發(fā)者去查看padding、margin沒有問題, 這時候我就想是網(wǎng)站模板出了問題吧,然后我去修改網(wǎng)站模板編碼,以為沒問題了,結(jié)果還是不行,好吧我把靜態(tài)頁面 下下來了,去研究原來有一個未知的元素在里面,是什么呢先不研究他是什么,因為我用的是DW看不到。
可以確定是編碼問題這時候我再想是不是前段時間我改的PHP文件出現(xiàn)編碼問題,難不成我要把所有改過的檢查一下?那不是什么都不用做 了嗎,再說我也沒那時間去逐個檢查因為改的太多了。
突然我想到了BOM問題導致網(wǎng)站頭部空白為什么這么說呢,我有個不好的習慣,習慣在服務(wù)器上的記事本里直接敲代碼,因為在WINDOWS下的記事本中,默認是 gb編碼,而我的網(wǎng)站是utf-8的在轉(zhuǎn)碼為以UTF-8編碼時,會在文件最前面插入三個不可見的字符(_0xEF _0xBB _0xBF, 即BOM——Byte Order Mark)。它是一串隱藏的字符,用于讓記事本等編輯器識別這個文件是否以UTF-8編碼。由于在 PHP中沒有考慮BOM的問題,不會忽略UTF-8編碼的文件開頭BOM的那三個字符,所以把它作為正文的一部分,將會造成在 頁面上輸出這三個字符。顯示效果一般是一個空行 或是一個亂碼。由于在html一開頭有這3個字符的存在,即使頁面的 top padding 設(shè)置為0,也無法讓整個網(wǎng)頁緊貼瀏覽器頂部。 用記事本編輯代碼,可能會出現(xiàn)的另外一個問題是:不能登入或者不能登出; 由于受COOKIE送出機制的限制,在這些文件開頭已經(jīng)有BOM的文件中,COOKIE無法送出(因為在 COOKIE送出前PHP已經(jīng) 送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實現(xiàn)的功能全部無效。
問題終于浮出了水面,下面來說下怎么解決這個問題。將織夢模板從服務(wù)器全部導到本地,將他們?nèi)繖z查一遍,不要只檢查{dede:include filename="header.htm"/}因為 這個問題不單單是一個模板的事,如果你記得你在記事本弄過哪個網(wǎng)站模板那就改一個好了。
織夢模板修改步驟:
將包含標簽(BOM)的復選框的對號取消,應(yīng)用、確定保存。然后讓織夢模板覆蓋服務(wù)器里的織夢模板,重新生成全站就好了。
如果你是在Notepad++編輯器中,就將文件轉(zhuǎn)為UTF-8無BOM編碼格式。