有关PHP中,excel编辑CSV文件上传的问题
需求
众所周知,excel保存的时候是ansi的形式,(而且我也不知道怎么改成utf-8),所以utf-8的文件用excel打开的时候会乱码,excel编辑的东西直接传上去也会导致各种奇怪报错……为了使非得使用excel编辑CSV并上传的用户有体验,以下代码是我的一种想法,就是通过循环与函数来把读取出来的字符串转换成兼容的UTF8形式。
代码片段
while(! feof($file)){
$csv = fgetcsv($file);//file是文件指针,作用是从文件指针中读入一行并解析 CSV 字段,成功时返回包含读取字段的索引数组, 或者在失败时返回 false。
$csv_line ++;
$str = var_export($csv, true);// 输出或返回变量的可解析字符串表示
$str_encoding = mb_detect_encoding($str);//检测字符串 str 的编码。但是记事本的ANSI会返回成ASCII
if($csv_array){//判断这个csv_array是否为数组。。。(不然会是bool,新版php报错)
for($i=0;$i<=3;$i++){
$csv_array[$i] = iconv($str_encoding,"UTF-8",$csv_array[$i]);//将检测到的编码转换为utf8 所有字段通过循环逐个转。
}
}
}