濮阳杆衣贸易有限公司

主頁(yè) > 網(wǎng)站建設(shè) > 建站知識(shí) > BOM問題導(dǎo)致織夢(mèng)生成的頁(yè)面頭部空白

BOM問題導(dǎo)致織夢(mèng)生成的頁(yè)面頭部空白

POST TIME:2017-11-13 00:16

今天突然發(fā)現(xiàn)網(wǎng)站頭部有一條空白,當(dāng)時(shí)我就想肯定css問題了,然后我就用開發(fā)者去查看padding、margin沒有問題, 這時(shí)候我就想是網(wǎng)站模板出了問題吧,然后我去修改網(wǎng)站模板編碼,以為沒問題了,結(jié)果還是不行,好吧我把靜態(tài)頁(yè)面 下下來了,去研究原來有一個(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ì)造成在 頁(yè)面上輸出這三個(gè)字符。顯示效果一般是一個(gè)空行 或是一個(gè)亂碼。由于在html一開頭有這3個(gè)字符的存在,即使頁(yè)面的 top padding 設(shè)置為0,也無法讓整個(gè)網(wǎng)頁(yè)緊貼瀏覽器頂部。 用記事本編輯代碼,可能會(huì)出現(xiàn)的另外一個(gè)問題是:不能登入或者不能登出; 由于受COOKIE送出機(jī)制的限制,在這些文件開頭已經(jīng)有BOM的文件中,COOKIE無法送出(因?yàn)樵?COOKIE送出前PHP已經(jīng) 送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實(shí)現(xiàn)的功能全部無效。

問題終于浮出了水面,下面來說下怎么解決這個(gè)問題。

將織夢(mèng)模板從服務(wù)器全部導(dǎo)到本地,將他們?nèi)繖z查一遍,不要只檢查{dede:include filename="header.htm"/}因?yàn)? 這個(gè)問題不單單是一個(gè)模板的事,如果你記得你在記事本弄過哪個(gè)網(wǎng)站模板那就改一個(gè)好了。

織夢(mèng)模板修改步驟:
  1. 1.將模板用DW打開,在Notepad++編輯器中等等,但我用的是DW。
  2. 2.到DW的菜單欄找到修改——頁(yè)面屬性或者你直接CTRL+j。
  3. 3.在彈出的對(duì)話框如下圖修改

將包含標(biāo)簽(BOM)的復(fù)選框的對(duì)號(hào)取消,應(yīng)用、確定保存。然后讓織夢(mèng)模板覆蓋服務(wù)器里的織夢(mèng)模板,重新生成全站就好了。

如果你是在Notepad++編輯器中,就將文件轉(zhuǎn)為UTF-8無BOM編碼格式。



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266
吉首市| 灵山县| 库尔勒市| 泽库县| 泽州县| 岳阳县| 三门县| 句容市| 邢台县| 吴旗县| 阳朔县| 五寨县| 张家界市| 滦平县| 海丰县| 平山县| 叶城县| 仁寿县| 且末县| 磐安县| 郴州市| 巴里| 龙南县| 西乡县| 阿瓦提县| 梓潼县| 满洲里市| 东阳市| 湖州市| 清新县| 射阳县| 富裕县| 肇州县| 东乡| 龙州县| 临朐县| 榆中县| 沽源县| 台江县| 娱乐| 宣城市|