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