解决方法是,使用: setlocale 函数设置环境变量。比如要设置使用gb 的区域设置可以在fgetcsv前使用下面的语句。
setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030'));
$fileCSV = 'products.csv'; $fp = fopen($fileCSV, 'r'); if($fp){ $i = 0; //在linux系统下,会出现乱码问题,加入以下一行代码,应该可以解决 setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030')); while ($data = fgetcsv($fp)) { $i++; /* 第一行抬头不算*/ if($i == 1) continue; //进行转码 $data1 = iconv('GBK','UTF-8',$data[0]); //$data2 = .... //如果多个字段,依次罗列即可 }; } fclose($fp);