上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
/*
* 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;
}
}
?>