PHP在处理csv在数据导入导出方面,要比.xls高效很多。
实现一上传csv文件导入功能时,遇到上传文件编码不是UTF-8的情况,导致读取的数据乱码。如果csv文件是utf-8文件,可能导致excel不能正常识别,所以就遇到的问题。
搜索后发现mb_detect_encoding可以检测字符串编码,不一定百分百识别,至少能满足我的需求
代码片断:
$tmp_row = array(); foreach ($csv_val as $k => $v) { $row_value = ltrim($row[$k], '`'); $encode = mb_detect_encoding($row_value, array("UTF-8", "GB2312", "CP936", "GBK")); if( $encode!="UTF-8" ){ $tmp_row[$v] = trim(iconv($encode,'UTF-8', $row_value)); }else{ $tmp_row[$v] = trim($row_value); } } $data[] = $tmp_row;