小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

刪除uft

 亂七九糟 2015-05-20
當(dāng)我們保存一個以UTF-8編碼的文件時,會在文件開始的地方插入三個不可見的字符(0xEF 0xBB 0xBF,即BOM),而這個bom頭可能導(dǎo)致一些不必要的問題,下面我整理了一些關(guān)于刪除uft-8文件bom頭信息一些常用方法,有興趣的朋友可進(jìn)入?yún)⒖肌?/div>

如果您在修改任何PHP文件發(fā)生:

* 不能登入或者不能登出; * 頁頂出現(xiàn)一條空白; * 頁頂出現(xiàn)錯誤警告; * 其它不正常的情況。

bom文件是怎么產(chǎn)生呢?

window編輯器如果保存為utf8文件就會幫你加上BOM頭,以告訴其他編輯器以utf8來顯示字符
但是在網(wǎng)頁上并不需要添加BOM頭識別,因?yàn)榫W(wǎng)頁上可以使用 head頭 指定charset=utf8告訴瀏覽器用utf8來解釋.但是你用window自動的編輯器,編輯,然后有顯示在網(wǎng)頁上這樣就會顯示出0xEF 0xBB 0xBF這3個字符。
這樣網(wǎng)頁上就需要去除0xEF 0xBB 0xBF,可以使用editplus 選擇不帶BOM的編碼,這樣就可以去除了

bom文件頭信息刪除

我最常用的方法來處理php文件處理

 代碼如下 復(fù)制代碼

<?php
/**
 * 用法:復(fù)制以下代碼至新建的php文件中,將該php文件放置項(xiàng)目目錄,運(yùn)行即可。代碼來源于網(wǎng)絡(luò)。
 * chenwei 注。
 */
header('content-Type: text/html; charset=utf-8');
$auto=1;/* 設(shè)置為1標(biāo)示檢測BOM并去除,設(shè)置為0標(biāo)示只進(jìn)行BOM檢測,不去除 */
$basedir='.';
$loop=true;
echo '當(dāng)前查找的目錄為:'.$basedir.'當(dāng)前的設(shè)置是:';
echo '(1)',$loop?'檢查當(dāng)前目錄以及當(dāng)前目錄的子目錄':'只針對當(dāng)前目錄進(jìn)行檢測';
echo '(2)',$auto?'檢測文件BOM同時去除檢測到BOM文件的BOM<br />':'只檢測文件BOM不執(zhí)行去除BOM操作<br />';

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).' <br>';
                }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 (' <font color=red>找到BOM并已自動去除</font>');
        }else{
            return (' <font color=red>找到BOM</font>');
        }
    }else{
        return (' 沒有找到BOM');
    }
}
function rewrite($filename,$data){
    $filenum=fopen($filename,'w');
    flock($filenum,LOCK_EX);
    fwrite($filenum,$data);
    fclose($filenum);
}

利用Dreamweaver 中去除bom方法

打開Dreamweaver->選擇編輯->首選參數(shù)->新建文檔標(biāo)簽->右邊->"包括Unicode 簽名(BOM)" 前面的對鉤去掉即可

刪除uft-8文件bom頭信息的方法


editplus等編程工具時UTF-8編碼去掉BOM頭方法

編輯器調(diào)整為UTF8編碼格式后,保存的文件前面會多出一串隱藏的字符(也即是BOM),用于編輯器識別這個文件是否是以UTF8編碼。一般的文本文件會忽略這一串隱藏的字符,但對于PHP等文件會解析這一串字符,這樣會導(dǎo)致出錯。

運(yùn)行Editplus,點(diǎn)擊工具,選擇首選項(xiàng),如下圖:

刪除uft-8文件bom頭信息的方法


選中文件,UTF-8標(biāo)識選擇 總是刪除簽名,如下圖:

刪除uft-8文件bom頭信息的方法

然后對PHP文件編輯和保存后的PHP文件就是不帶BOM的了


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

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

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

這條命令會查找當(dāng)前目錄及子目錄下所有包含BOM頭的文件,并把文件名在屏幕上輸出。

但是,刪除BOM頭,網(wǎng)上找到的命令大多不能用,比較常見的命令是:

grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q'
但這條命令會把除了首行之外所有的行刪除,所以毫無意義。

經(jīng)測試如下命令是可行的:

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

這個命令會把當(dāng)前目錄及所有子目錄下的BOM頭刪除掉。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多