php导出CSV文件和解决乱码问题

1、获取数据

<?php
header("Content-type:text/html;charset=utf-8");
$pdo = new PDO("mysql:host=localhost;dbname=text1", 'root', '');
$pdo->query("set names utf-8");
$sql = "select * from first";
$res = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
$str = '姓名,地址,电话'."\n";
foreach ($res as $row) {
    $str .= $row['name'].','.$row['address'].','.$row['phone']."\n";
}

$filename = date("Ymd").'.csv';
export_csv($filename, $str);


2、导出CSV文件

function export_csv($filename, $data)
{
    header("Content-type:text/csv");
    header("Content-Disposition:attachment;filename=".$filename);  // Content-Disposition指的是属性名,attachment指的是以附件形式下载,filename为默认保存文件名
    header('Cache-Control:must-revalidate,post-check=0,pre-check=0');  // Cache-Control:must-revalidate强制不缓存,post-check=0,pre-check=0是IE5中的防缓存
    header('Expires:0');  // 不缓存
    header('Pragma:public');
    echo chr(0xEF).chr(0xBB).chr(0xBF);  // 解决乱码
    echo $data;
}

3、解决乱码的补充

CSV文件要使用BOM标识字符编码,而PHP中是去除BOM的,BOM的编码方式是EE BB BF,所以上面要输出







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值