我用织梦做的网站,出现了导致网页顶部空白一行的问题。通过搜索,了解到这原来是UTF-8的BOM的问题。
导致网页顶部空白一行原因
这个问题只会在chrome和edge浏览器出现。由于该HTML页面是由PHP解析模版生成的,因此先后排查了html模版文件、JavaScript文件、php文件,最后发现php文件存在BOM头。
UTF-8+BOM编码方式一般会在windows操作系统中出现,比如WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF0xBB0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于PHP来说,BOM是个大麻烦。因为PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来,即我们看到的(??#65279)字符。
解决方法:
检查出现()字符的相关页面(php,html,css,js等),查看页面编码方式,如果是UTF-8+BOM编码方式,则使用notepad++或其他工具存储为“UTF-8无BOM”即可解决。
我用的是Dreamweave修改的,打开源文件,点击工具栏的-修改-页面属性-标题/编码 - unicode标准化表单 选择无, unicode签名(bom) 选择无。另存为覆盖原来的,保存时注意 下面还有 unicode 这个选择,别弄错了。