多谢大家,更谢谢wzhiyuan,我解决了,就是include的问题,包含的文件是utf-8编码的,但是有BOM头,我用一个函数把网站目录里的所有文件的BOM头去掉以后就恢复正常了,希望看到帖子的同志们以后遇到这样的问题不要跟我一样纠结了,顺便贴一下我去除BOM头的函数代码,希望大家能用上,不要像我一样纠结了
PHP code ?
<?php 
$basedir  =  str_replace ( '/clearBOM.php' , '' , str_replace ( '\\' , '/' ,dirname( __FILE__ )));
$auto  = 1;
checkdir( $basedir );
function  checkdir( $basedir ){
     if  ( $dh  = opendir( $basedir )) {
         while  (( $file  = readdir( $dh )) !== false) {
             if  ( $file  !=  '.'  &&  $file  !=  '..' ){
                 if  (! is_dir ( $basedir . '/' . $file )) {
                     $filename  =  $basedir . '/' . $file ;
                     echo  'filename:' . $basedir . '/' . $file .checkBOM( $filename ). '<br>' ;
                 }  else  {
                     $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 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 );
}
?>


使用的方法是将该代码放入文件后放在网站的根目录,或者你想去哪个目录的BOM就放在哪个目录,然后直接用URL访问这个PHP文件就可以了!