【删除u盘分区】删除uft-8文件bom头信息的方法

时间:2019-06-06  来源:Ubuntu  阅读:

如果您在修改任何PHP文件发生:

* 不能登入或者不能登出; * 页顶出现一条空白; * 页顶出现错误警告; * 其它不正常的情况。

bom文件是怎么产生呢?

window编辑器如果保存为utf8文件就会帮你加上BOM头,以告诉其他编辑器以utf8来显示字符
但是在网页上并不需要添加BOM头识别,因为网页上可以使用 head头 指定charset=utf8告诉浏览器用utf8来解释.但是你用window自动的编辑器,编辑,然后有显示在网页上这样就会显示出0xEF 0xBB 0xBF这3个字符。
这样网页上就需要去除0xEF 0xBB 0xBF,可以使用editplus 选择不带BOM的编码,这样就可以去除了

bom文件头信息删除

我最常用的方法来处理php文件处理

 代码如下

/**
 * 用法:复制以下代码至新建的php文件中,将该php文件放置项目目录,运行即可。代码来源于网络。
 * chenwei 注。
 */
header("content-Type: text/html; charset=utf-8");
$auto=1;/* 设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除 */
$basedir=".";
$loop=true;
echo "当前查找的目录为:".$basedir."当前的设置是:";
echo "(1)",$loop?"检查当前目录以及当前目录的子目录":"只针对当前目录进行检测";
echo "(2)",$auto?"检测文件BOM同时去除检测到BOM文件的BOM
":"只检测文件BOM不执行去除BOM操作
";

checkdir($basedir,$loop);
function checkdir($basedir="",$loop=true){
    $basedir=empty($basedir)?".":$basedir;
    if($dh=opendir($basedir)){
        while (($file=readdir($dh))!==false){
            if($file!="."&&$file!=".."){
                if(!is_dir($basedir."/".$file)){
                    echo "文件: ".$basedir."/".$file .checkBOM($basedir."/".$file)."
";
                }else{
                    if(!$loop) continue;
                    $dirname=$basedir."/".$file;
                    checkdir($dirname);
                }
            }
        }
        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 (" 找到BOM并已自动去除");
        }else{
            return (" 找到BOM");
        }
    }else{
        return (" 没有找到BOM");
    }
}
function rewrite($filename,$data){
    $filenum=fopen($filename,"w");
    flock($filenum,LOCK_EX);
    fwrite($filenum,$data);
    fclose($filenum);
}

利用Dreamweaver 中去除bom方法

打开Dreamweaver->选择编辑->首选参数->新建文档标签->右边->"包括Unicode 签名(BOM)" 前面的对钩去掉即可

删除uft-8文件bom头信息的方法


editplus等编程工具时UTF-8编码去掉BOM头方法

编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。一般的文本文件会忽略这一串隐藏的字符,但对于PHP等文件会解析这一串字符,这样会导致出错。

运行Editplus,点击工具,选择首选项,如下图:

删除uft-8文件bom头信息的方法


选中文件,UTF-8标识选择 总是删除签名,如下图:  

删除uft-8文件bom头信息的方法

然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了


linux下查找包含BOM头的文件和清除BOM头命令

查找包含BOM头的文件,命令如下:

grep -r -I -l $"^\xEF\xBB\xBF" ./

这条命令会查找当前目录及子目录下所有包含BOM头的文件,并把文件名在屏幕上输出。

但是,删除BOM头,网上找到的命令大多不能用,比较常见的命令是:

grep -r -I -l $"^\xEF\xBB\xBF" /path | xargs sed -i "s/^\xEF\xBB\xBF//;q"
但这条命令会把除了首行之外所有的行删除,所以毫无意义。

经测试如下命令是可行的:

 find . -type f   -exec  sed -i "s/\xEF\xBB\xBF//" {} \;

这个命令会把当前目录及所有子目录下的BOM头删除掉。

【删除u盘分区】删除uft-8文件bom头信息的方法

http://m.bbyears.com/caozuoxitong/53502.html

推荐访问:删除ubuntu 删除ubuntu系统 删除页眉横线 删除itunes资料库 删除虚拟机 删除差评 删除upan驱动 删除url中的query参数
相关阅读 猜你喜欢
本类排行 本类最新