查看: 742|回复: 0
打印 上一主题 下一主题

[网页编程] dedecms调用dede:include head文件时页面顶部出现一行空白的解...

[复制链接]
跳转到指定楼层
1
发表于 2016-3-28 12:11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近制作模板的时候发现一些问题,当我在调用{dede:include filename="header.htm"/} (网页头部文件),或者{dede:include filename="footer.htm"/}(网页底部文件)标签时,在生成的页面中,会在页面顶端出现一行空白,导致整个页面下移一行(高度大概是24px),破坏了整个页面的整体布局,不管如何修改CSS也没有用,经过查找原因之后才发现是因为文件编码的问题。. C/ y+ [* ^0 B( E0 d

5 h% X7 H6 N9 d当我们使用的页面编码是UTF-8编码时,而恰巧我们又使用了windows自带的文本编辑器或者某些无法去除BOM的编辑器,这是,就会导致源码以UTF-8+BOM编码格式保存下来。
7 P- q: y, j7 T" W/ N8 h- u' Y( h% i5 f! d/ M, |- F! j: k# i
因为在WINDOWS下的记事本中,默认是gb编码,在转码为以UTF-8编码时,会在文件最前面插入三个不可见的字符(_0xEF _0xBB _0xBF,即BOM——Byte Order Mark)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。由于在PHP中没有考虑BOM的问题,不会忽略UTF-8编码的文件开头BOM的那三个字符,所以把它作为正文的一部分,将会造成在页面上输出这三个字符。显示效果一般是一个空行 或是一个乱码。由于在html一开头有这3个字符的存在,即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部。" g3 V! G9 V7 P! m) F
- ^) f, _. w! q. f1 u
由于受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在 COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。
" j$ p: H3 q& E$ O+ L+ A
+ k/ K4 g! q1 m0 H3 q! a6 A! U用记事本编辑代码,可能会出现的另外一个问题是:不能登入或者不能登出;有时还会出现后台页面显示空白等各种问题,总之,如果你使用了UTF-8编码,那么就请您远离记事本!!!5 F' p% Z2 l' a' j- W- V5 ?
" z3 d, N1 z- F9 H+ l2 P0 s
解决办法:
4 N6 X8 n# D: p5 L5 h( g1 x
, n) W! l5 S, L# o在Notepad++或其他非windows自带文本编辑器中,将文件转为UTF-8无BOM编码格式。
' L4 j( _3 e/ Q
9 s5 `+ w/ T3 p- C( h2 u; I( \或者在在Dreamweaver中点修改->页面属性->标题/编码->把包括 Unicode 签名(BOM)的勾取消。
+ ^. H/ d8 l, b! f' u6 [$ X7 H' z1 n  ?  e
总之,在编辑UTF-8编码的页面时,出现问题要首先看下编码格式是否正确。
$ L# H' U3 V/ o' L$ ^5 _+ `2 @# p2 o: X' R# R$ ]
转载请注明出处,百湖广角镜(http://www.daqing360.comyabo88狗亚体育app下载地址宗亲网http://www.fanwuzi.comhttp://www.fanjiaren.orghttp://www.fanjiaren.cnhttp://www.fanjiaren.com.cn)谢谢。
欢迎访问yabo88狗亚体育app下载地址宗亲网!请牢记我们的主网址:【www.fanwuzi.com】,备用网址:【www.fanjiaren.org】。
您需要登录后才可以回帖 登录 | 停止注册

本版积分规则

小黑屋|手机版|Archiver|yabo88狗亚体育app下载地址宗亲网 ( 黑ICP备16002281号 )

GMT+8, 2019-12-19 08:45 , Processed in 0.077217 second(s), 21 queries , Gzip On. Powered by Discuz! X3.4 Licensed

快速回复 返回顶部 返回列表