这个东西确实很烦,文件编码格式,各种情况 各种纠结,验证码一直不显示 找了几天 才发现是这个原因,最后网上找了一段代码才解决,下边是解决方法。
项目开始之初强调了utf8的编码,但居然还有no bom & bom 区分。痛苦啊!!
搞了个 kill utf8-bom 的php脚本,实现 convert utf-bom to utf8-nobom。
把以下代码保存为:killbom.php,放在要转换的文件根目录下执行即可。
**********************************************************************
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | <?php if(isset($_GET['dir'])){ //config the basedir     $basedir=$_GET['dir']; }else{     $basedir= '.'; }$auto= 1;checkdir($basedir);functioncheckdir($basedir){     if($dh= opendir($basedir)) {         while(($file= readdir($dh)) !== false) {             if($file!= '.'&& $file!= '..'){                 if(!is_dir($basedir."/".$file)) {                     echo"filename: $basedir/$file".checkBOM("$basedir/$file")."<br>";                 }else{                     $dirname= $basedir."/".$file;                     checkdir($dirname);                 }             }         }     closedir($dh);     } }functioncheckBOM ($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>");         }     }     elsereturn("BOM Not Found."); }functionrewrite ($filename, $data) {     $filenum= fopen($filename, "w");     flock($filenum, LOCK_EX);     fwrite($filenum, $data);     fclose($filenum); } ?> | 
- 本文固定链接: http://www.letg.top/?p=38
- 转载请注明: ubosm 于 点滴分享 发表