PHP CSV无法显示中文的问题


上PHP官网翻了一下,原来加上setlocale即可解决。 
原本用PHP4没出现这问题,大概是PHP5才会这样吧... 
注释:setlocale() 函数仅针对当前脚本改变地区信息。 
提示:可以通过 setlocale(LC_ALL,NULL) 把地区信息设置为系统默认。 


// utf-8 
setlocale(LC_ALL, 'en_US.UTF-8'); 
// 简体 
setlocale(LC_ALL, 'zh_CN'); 

//设置回系统默认 
setlocale(LC_ALL,NULL); 

以下是常用的地区标识 
zh_CN GB2312 
en_US.UTF-8 UTF-8 
zh_TW BIG5 
zh_HK BIG5-HKSCS 
zh_TW.EUC-TW EUC-TW 
zh_TW.UTF-8 UTF-8 
zh_HK.UTF-8 UTF-8 
zh_CN.GBK GBK

 

代码:

<?php

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/



class excel extends Action{

       

       //显示导入

       public function ShowReade(){

               setlocale(LC_ALL,NULL);

               $result = $this->Reade();

               for($i=0;$i<count($result);$i++){

                       for($j=0;$j<count($result[$i]);$j++){

                               //echo mb_detect_encoding($result[$i][$j]);

                               echo $this->expChangeCode($result[$i][$j]).'  '; //页面编码为utf-8时使用,否则中文会出现乱码

                       }

                       echo '<br><br>';

               }

       }





       /**

        * 解决乱码

        */

       function expChangeCode($str){

               $str = mb_convert_encoding($str,"UTF-8","gbk");

               return $str;

       }



       public function Reade(){

               $handle = fopen("2011.csv","r");

               $out = array();

               $n = 0;

               while ($data = fgetcsv($handle, 10000)){

                       $num = count ($data);

                       for($i=0;$i<$num;$i++){

                               $out[$n][$i] = $data[$i];

                       }

                       $n++;

               }

               return $out;

          }

}

?>

你可能感兴趣的:(PHP,中文,csv)