window编辑器如果保存为utf8文件就会帮你加上BOM头,以告诉其他编辑器以utf8来显示字符
但是在网页上并不需要添加BOM头识别,因为网页上可以使用 head头 指定charset=utf8告诉浏览器用utf8来解释.但是你用window自动的编辑器,编辑,然后有显示在网页上这样就会显示出0xEF 0xBB 0xBF这3个字符。
这样网页上就需要去除0xEF 0xBB 0xBF,可以使用editplus 选择不带BOM的编码,这样就可以去除了
bom文件头信息删除
我最常用的方法来处理php文件处理
-
-
-
* 用法:复制以下代码至新建的php文件中,将该php文件放置项目目录,运行即可。代码来源于网络。
-
-
-
header('content-Type: text/html; charset=utf-8');
-
$auto=1;/* 设置为1标示检测BOM并去除,设置为0标示只进行BOM检测,不去除 */
-
-
-
echo '当前查找的目录为:'.$basedir.'当前的设置是:';
-
echo '(1)',$loop?'检查当前目录以及当前目录的子目录':'只针对当前目录进行检测';
-
echo '(2)',$auto?'检测文件BOM同时去除检测到BOM文件的BOM<br />':'只检测文件BOM不执行去除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>';
-
-
-
$dirname=$basedir.'/'.$file;
-
-
-
-
-
-
-
-
function checkBOM($filename){
-
-
$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){
-
-
$rest=substr($contents,3);
-
rewrite($filename,$rest);
-
return (' <font color=red>找到BOM并已自动去除</font>');
-
-
return (' <font color=red>找到BOM</font>');
-
-
-
-
-
-
function rewrite($filename,$data){
-
$filenum=fopen($filename,'w');
-
-
-
-
linux下查找包含BOM头的文件和清除BOM头命令
查找包含BOM头的文件,命令如下: grep -r -I -l $'^\xEF\xBB\xBF' ./ 这条命令会查找当前目录及子目录下所有包含BOM头的文件,并把文件名在屏幕上输出。 但是,删除BOM头,网上找到的命令大多不能用,比较常见的命令是: grep -r -I -l $'^\xEF\xBB\xBF' /path(www.111cn.net) | xargs sed -i 's/^\xEF\xBB\xBF//;q' 但这条命令会把除了首行之外所有的行删除,所以毫无意义。 经测试如下命令是可行的: find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \; 这个命令会把当前目录及所有子目录下的BOM头删除掉。
本网刊登的文章均仅代表作者个人观点,并不代表本网立场。文中的论述和观点,敬请读者注意判断。
本文地址:http://www.xlkjgs.com/notes/html/512.html