网页bug--UTF-8 网页莫名其妙地头部出现一行空白
来源:互联网 发布:中国网络空间安全 编辑:程序博客网 时间:2024/04/29 06:05
许多时候 ,做好的网页在本地测试完全无误,但是再传到网络上就会莫名其妙地出现一行空白。
原因 就是文本编辑器对UTF-8编码的时候默认给文档头部加载了我们看不到的BOM。
具体描述:类 似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(_0xEF _0xBB _0xBF,即BOM——Byte Order Mark)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,PHP在设计时就没有考虑BOM的问题,不会忽略UTF-8编码的文件开头BOM的那三个字符,会把BOM作为该文件开头正文的一部分。由于必须在<?或者<?php后面的代码才会作为PHP代码执行,所以将会造成在页面上输出这三个字符,显示效果就要看浏览器了,一般是一个空行或是一个乱码。由于在html一开头有这3个字符的存在,即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部。由于受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在 COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖COOKIE、SESSION实现的功能全部无效。
效果如下 :见图
处理方式
在编辑、更改任何文本文件时,请务必使用不会乱加BOM的编辑器。Linux下的编辑器应该都没有这个问题。WINDOWS下,请勿使用记事本等编辑器。 推荐的编辑器是:
Editplus 2.12版本以上;
EmEditor;
UltraEdit(需要取消‘添加BOM’的相关选项);
Dreamweaver(需要取消‘添加BOM’的相关选项);
Notepad(需要进行“转换为不带BOM的UTF-8”)等。
对于已经添加了BOM的文件,要取消的话,可以用以上编辑器另存一次。(Editplus需要先另存为gb,再另存为UTF-8。)
- 网页bug--UTF-8 网页莫名其妙地头部出现一行空白
- 网页中的头部部分多出一行空白
- IE显示UTF-8编码网页空白
- 使用UTF-8编码后一些网页出现空白或乱码
- 网页中出现莫名其妙的空隙,引号。
- 网页中出现莫名其妙的空隙引号
- 解决网页出现空白问题
- 如何消除网页顶部的一行空白?
- 如何消除网页顶部的一行空白?
- 如何消除网页顶部的一行空白
- php require include 之后,占据一行,网页出现空白行的解决办法
- 一个 utf-8 网页在 IE6 下的BUG
- 出现空白网页可能的原因
- 网页两边出现空白的解决办法
- Chrome浏览器访问某些网页出现莫名其妙的声音
- UTF-8字符集网页在IE上显示空白的问题
- link标签和script标签跑到body下面,网页顶部有空白,UTF-8 BOM问题
- php页面用include引入header.php出现头部上边有一行空白
- VMware linux 增加根目录空间 (使用图形分区工具gparted LiveCd)
- hdu3699 A hard Aoshu Problem
- UIApplication、AppDelegate、委托
- lightoj 1045 - Digits of Factorial 取对数
- C++虚继承时内存布局
- 网页bug--UTF-8 网页莫名其妙地头部出现一行空白
- 【LeetCode OJ】Populating Next Right Pointers in Each Node II
- Windows7 64bit下配置Apache+PHP+MySQL
- mysql备份还原(视图、存储过程)
- 3.12 CMMI3级——深入理解三个O(OPF OPD OT)
- IOS的学习--mac开发和ios开发最大的区别是什么?
- android 异常积累(myself)
- 怎么搭建持续集成/质量数据度量中心(二)
- NSString常用方法