织梦DEDECMS静态页面由于&#65279导致网页顶部空白一行的解决办法

今天在做一个搜索页面时遇到一个奇怪的问题,这个搜索页是通过文章列表页另存为得到了,文章列表页都显示正常,就是搜索页面不行,顶部空了一行,导致整个页面布局乱了,并且导航栏目调用没效果,仔细查看源代码。发现在源码顶部多出&#65279字符。

网上一搜索才明白,原来是UTF-8的BOM的问题,这个问题只会在chrome和edge浏览器出现。UTF-8+BOM编码方式一般会在windows操作系统中出现,比如WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF0xBB0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于PHP来说,BOM是个大麻烦。因为PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来,即我们看到的(??#65279)字符。

原来我的DW里面这个UNICOED签名这个是选中的,这就导致我另存为模板时出现BOM问题,那解决问题就方便了,用DW打开有问题的文件,页面属性里面把这个包含UNICOED签名勾去掉,应用,确实。然后问题就解决了。

THE END