您现在的位置是:首页 > 其他

李清波 2014-09-30 其他 62497 复制当前网址

head里面的标签body下面的解决办法

    

  其实这个问题我也找了半天,一开始也不知道是什么问题,后来在网上找了各种方法才能解决的,现在我来分享给大家。


  错误:

  本地调试一切正常,上传空间后head里的meta、link、js等都跑到body里,并在第一行产生空行。

  firefox、chrome等非ie核心浏览器能较为正常运行,只是空行等小错误,但在ie里会导致整个排版出错。

  解决办法:

  一如本人上一个乱码问题的解决思路,这次依然是编辑器的设置问题

  以dreamweaver为例:

  编辑 =》首选参数 =》新建文档

  包括Unicode签名(BOM)前面的勾选去掉。

  如要修改已生成的文件,可以在 修改 =》页面属性 里的标题编码里,同样去掉BOM前面的勾选。这样上传到网站后就会恢复正常。

  原因:

  一般都能按以上方法解决问题,下面则是转自网络的具体原因~

  原因是全部采用utf8编码,包含文档的时候,最后的二进制流中包含了多次UTF8 BOM标记,IE不能正常解析包含多个UTF8 BOM 标记的页面,直接替换成实际显示的回车,这样导致一个空行,而firefox却没有这个问题。


    可是当我们创建一个很庞大的项目的时候肯定有很多文件,也包含了许多文件,这时候我们是很难找出到底那个文件才是包含BOM标签的,而这里我们来讲一下如何利用PHP程序来查找包含BOM标签的文件。

    代码如下:

    

<?
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
 
$basedir="."; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。
 
//以下不用改动
 
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>";
}
closedir($dh);
}
 
function checkBOM ($filename) {
global $auto;
$contents=file_get_contents($filename);
$charset[1]=substr($contents, 0, 1);
$charset[2]=substr($contents, 1, 1);
$charset[3]=substr($contents, 2, 1);
if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {
if ($auto==1) {
$rest=substr($contents, 3);
rewrite ($filename, $rest);
return ("<font color=red>BOM found, automatically removed.</font>");
} else {
return ("<font color=red>BOM found.</font>");
}
}
else return ("BOM Not Found.");
}
 
function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}


文章来源:https://liqingbo.com/blog-337.html

评论