PHP 使用 fgetcsv 读取 csv 文件内容中文乱码
使用 php 自带的 fgetcsv 读取 csv 文件内容,出现乱码。这是因为 csv 文件内容格式不是 utf 的,所以在读取和写入数据库时就会出现乱码,可以用 iconv 函数转换解决。
修复后的 demo 如下(laravel 获取文件):
$file = Input::file('xls_file_name');
$fp = fopen($file->getRealPath(), 'r');
$shops = array();
$key_arr = ['name', 'pcd', 'address'];
while ($line = fgetcsv($fp)) {
$line_data = array();
$i = 0;
foreach ($key_arr as $key) {
$line_data[$key] = iconv('gb2312','utf-8', $line[$i]);
$i++;
}
array_push($shops, $line_data);
$line = fgetcsv($fp);
}
unset($shops[0]);