zoukankan      html  css  js  c++  java
  • dedecms调用头部文件 dede:include时页面出现一行空白的解决方案

    最近制作模板的时候发现一些问题,当我在调用
    {dede:include filename="header.htm"/} (网页头部),或者
    {dede:include filename="footer.htm"/}(网页底部)标签时,
    在生成的页面中,会出现一行空白,破坏了整个页面的布局,即使如何修改CSS也没有用,经过查找原因之后才发现问题的所在。原来我每次新建一个模版htm文件时,喜欢新建一个记事本文件,再将其后缀名改成htm,然后用编辑器打开,另外我的编码是UTF-8,所以问题出现了。因为在WINDOWS下的记事本中,默认是gb编码,在转码为以UTF-8编码时,会在文件最前面插入三个不可见的字符(_0xEF _0xBB _0xBF,即BOM——Byte Order Mark)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。由于在PHP中没有考虑BOM的问题,不会忽略UTF-8编码的文件开头BOM的那三个字符,所以把它作为正文的一部分,将会造成在页面上输出这三个字符。显示效果一般是一个空行 或是一个乱码。由于在html一开头有这3个字符的存在,即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部。
    用记事本编辑代码,可能会出现的另外一个问题是:不能登入或者不能登出;
    由于受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在 COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。

    解决办法:

    在Notepad++编辑器中,将文件转为UTF-8无BOM编码格式


    或者在在Dreamweaver中点修改->页面属性->标题/编码->把包括 Unicode 签名(BOM)的勾取消。

  • 相关阅读:
    linux内核中GNU C和标准C的区别
    linux内核中GNU C和标准C的区别
    Getting start with dbus in systemd (02)
    Getting start with dbus in systemd (01)
    Getting start with dbus in systemd (03)
    物理内存相关的三个数据结构
    数据类型对应字节数(32位,64位 int 占字节数)
    Linux kernel 内存
    共模电感的原理以及使用情况
    [原创]DC-DC输出端加电压会烧毁
  • 原文地址:https://www.cnblogs.com/xiaomifeng/p/13139897.html
Copyright © 2011-2022 走看看