您的位置:首页 > 其它

file_put_contents 保存文件时乱码

2011-04-26 11:16 411 查看
tomcat让人抓狂,后台java写的一个应用程序生成的静态html居然是ANSI编码格式的文件,前台首页点击查看页面时直接乱码了…

 

使用新的tomcat、重新配置,然后放在webapp下重新弄,不使用Catalina/localhost的方式,依旧不行。。得,同事机器上可以跑,而且正常,就我机器跑不起来。因为要频繁更改模板文件,所以不太好用nginx反向代理到同事的机器上,最好能在本机跑..

 

所以决定用php把那些该死的乱码文件全部全部转一下编码再保存…

在使用file_put_contents的时候,遇到比较郁闷的问题,文件格式是对了,但里面却乱码了,后面想想,觉得应该是先删除文件再进行处理,试了一下,文件格式正确、内容正确。

 

在使用iconv函数时,先开始用gb2312->utf-8发现不行,部分字符串无法读入进去,然后抱着试试的心态,使用gbk->utf-8居然行了~ ~

---注:在转码前需要判定该文件编码格式是否为utf-8,如果为utf-8转码反而出错

 

花几分钟写的,有点乱,达到预期目标就成。

 
[code][code] <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


 


<?php




function reSaveFile($path) {


    


    if (is_dir($path)) {


   


   if ($handle = opendir($path)) {


  while (($file = readdir($handle)) !== FALSE) {


 


 if ($file != "." && $file != "..") {


$fileName = $path."/".$file;




if (is_file($fileName) && preg_match("/.html$/", $file)) {


    echo "<div>正在处理文件:".$fileName."</div>";


    


    saveHandler($fileName);


} else if (is_dir($fileName)) {


    echo "<div style='color:#406c99;'>文件夹".$fileName."</div>";


    


    reSaveFile($fileName);


} else {


    echo "<div style='color:#f00;'>跳过的文件:".iconv("gbk", "utf-8", $fileName)."</div>";   


}




 }


 


  }


  


  closedir($path);


   }


   


    } else {


   echo "1";


    }


    


}




function isUTF8($str) {


    if ($str === mb_convert_encoding(mb_convert_encoding($str, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) {


   return true;


    } else {


   return false;


    }


}




function saveHandler($fileName) {


    $mode = "r";


    


    $file_content = file_get_contents($fileName);


 //   $file_content = strip_tags($file_content);


    


    if (isUTF8($file_content)) {


   echo "<div>跳过utf-8文件:".$fileName."</div>";


   return ;


    }


    


    $file_content = iconv("gbk", "utf-8", $file_content);


    


    if (file_exists($fileName)) {


   unlink($fileName);


    }


    


    file_put_contents($fileName, $file_content);


    


    echo "<a href='".$fileName."'>".$fileName."</a>保存成功";


    


    echo "<textarea>".$file_content."</textarea>";


}




reSaveFile("C:/AEApps/application/GTJ_GW3");


?>

[/code]
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: