Laravel 下导入 CSV 出现汉字差行的问题。
最近在工作上,遇到了一个上传csv文件直接写入数据库更新数据库的问题。
这个类是上一个项目的人写的,我直接调用。
打印出来的csv结果上,发现汉字会出现识别差行的问题。
应该是29个数据,最后只能识别出来27个,但如果在csv数据最后写上的是数字,就能完整的识别29条出来。
用的csv文件字符编码是SJIS-win
查了一些,貌似都没对。。
类代码
public function load($file)
{
$result = [];
//获取文件名
$filename = $file->getClientOriginalName();
$file->move(storage_path().'/upload/',$filename);
$filepath = storage_path().'/upload/'.$filename;
file_put_contents($filepath, mb_convert_encoding(file_get_contents($filepath), 'UTF-8', 'SJIS-win'));
//取出csv文件
$file = new \SplFileObject($filepath);
$file->setFlags(\SplFileObject::READ_CSV);
foreach ($file as $line) {
if(!is_null($line[0])){
$result[] = array_map('trim', $line);
}
}
return $result;
}
调用代码
打印出来$row_data
$file = $request->file('csvfile_fee');
$csv_data = CSV::load($file);
$row_count = 1;
foreach ($csv_data as $row_data) {
if ($row_count > 1) {
dd($row_data);
$id = $row_data[0];
$reg_number = $row_data[1];
.........
}
$row_count++;
}
这是汉字错误显示
字尾上添加数字后正常显示
⬇︎第一次零基础搭建的个人博客。欢迎批评指正,大力鞭策!❤︎
旺财的个人博客(⌯¤̴̶̷̀ω¤̴̶̷́)✧
January 17th, 2020
推荐文章: