CSV插入UTF-8 BOM头防止打开乱码案例代码

      发布在:后端技术      评论:0 条评论

require_once 'vendor/autoload.php'; // 引入自动加载文件

//这里用到了ParseCsv\Csv库,使用系统自带的竟然分不清内容分割位置
use ParseCsv\Csv;
$codeid=isset($_GET['codeid'])?trim($_GET['codeid']):'';
if(empty($codeid)){
   exit(['code'=>500,'data'=>[],'msg'=>'codeid不能为空']);
}
$csvParser = new Csv();
//解决显示乱码问题
$csvParser->encoding('GBK', 'UTF-8');
$csvParser->auto('loupan.csv'); // data.csv 是要操作的 CSV 文件名
$data = $csvParser->data;

$getRows = [];
$change = false;
foreach ($data as &$record) {
   if ($record['codeid'] == $codeid) {
       $record['views'] = $record['views']+1;
       $getRows = $record;
       $change = true;
   }
}

if ($change) {
   $csvParser->save('loupan.csv',$data, false);
   $data = file_get_contents('loupan.csv');
   if(strpos($data, "\xef\xbb\xbf") !== 0){
//插入BOM头防止打开乱码
       file_put_contents('loupan.csv',"\xef\xbb\xbf".$data);
   }
}

//输出utf-8   防止浏览器显示乱码
header('Content-Type:application/json;charset=utf-8');
exit(json_encode(['code'=>200,'data'=>$getRows,'msg'=>'success']));


相关文章
热门推荐