$file_path ../excel/excel50000.xlsx'; //文件路径
$handle = fopen( $file_path, 'r' );
while(( $data = fgetcsv( $handle, 3000, ',' ) ) !== false){
$data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';');
dd($data);
}
使用fgetcsv()读取excel的内容,一直是乱码,使用iconv转码也无效
还请各位能指点一二
我可以尝试解决该问题。
第一步,确认读取文件的编码格式是否正确,如果文件在Windows环境中生成,可能是ANSI编码,需要先将其转换为UTF-8编码。
示例代码:
$file = 'test.csv';
if (file_exists($file)) {
$data = file_get_contents($file);
$data = mb_convert_encoding($data, 'UTF-8', 'GBK');
// 此处将ANSI编码转换为UTF-8编码
$rows = explode("\n", $data);
foreach ($rows as $row) {
$cols = str_getcsv($row);
// 处理每一行的数据
}
}
第二步,将读取到的数据进行转码,这里使用iconv函数进行转码。
示例代码:
$file = 'test.csv';
if (file_exists($file)) {
$handle = fopen($file, 'r');
while (!feof($handle)) {
$row = fgetcsv($handle);
if (is_array($row)) {
foreach ($row as $key => $value) {
$row[$key] = iconv('GBK', 'UTF-8', $value);
}
// 处理每一行的数据
print_r($row);
}
}
fclose($handle);
}
以上是解决该问题的两种方法,在使用fgetcsv函数读取excel文件时可能会遇到的乱码问题,如果还存在其他问题可以进一步调试或使用其他方法解决。