php导出csv中文乱码怎么办
程序员文章站
2022-03-27 15:37:08
...
php导出csv中文乱码的解决办法:1、设置header编码修改为UTF-8;2、在输出内容前先输出BOM头;3、把UTF-8转GB2312即可。
本文操作环境:windows7系统、PHP7.1版、DELL G3电脑
php导出csv中文乱码怎么办?
PHP导出CSV中文乱码的解决方法:UTF-8转GB2312
一、背景
因项目需求,要导出Excel表格数据,使用fputcsv方法导出数据遇到中文乱码,去网上查找了一遍解决方法。
1)设置header编码修改为UTF-8
2)在输出内容前先输出BOM头
以上两种方法均无效,不知是否我的环境原因还是其他,暂不去深究。
二、解决方法
由于项目默认是UTF-8编码,Excel不支持,所以得把UTF-8转GB2312。
【核心】重写fpucsv方法,添加转码功能:
/** * 重写fputcsv方法,添加转码功能 * @param $handle * @param array $fields * @param string $delimiter * @param string $enclosure * @param string $escape_char */ function fputcsv2($handle, array $fields, $delimiter = ",", $enclosure = '"', $escape_char = "\\") { foreach ($fields as $k => $v) { $fields[$k] = iconv("UTF-8", "GB2312//IGNORE", $v); // 这里将UTF-8转为GB2312编码 } fputcsv($handle, $fields, $delimiter, $enclosure, $escape_char); }
使用例子:
function test () { // 文件名 $filename = "订单查询结果" . date('Y-m-d H:i:s'); // 设置输出头部信息 header('Content-Encoding: UTF-8'); header("Content-Type: text/csv; charset=UTF-8"); header("Content-Disposition: attachment; filename={$filename}.csv"); $tableHead = array('#', '订单id', '订单号', '分类', '客户信息', '工匠信息', '订单状态', '施工状态', '付款状态', '订单金额', '下单时间', '备注'); // 获取句柄 $output = fopen('php://output', 'w') or die("can't open php://output"); // 输出头部标题 fputcsv2($output, $tableHead); $list = array(); foreach ($list as $item) { fputcsv2($output, array_values($item)); } // 关闭句柄 fclose($output) or die("can't close php://output"); }
推荐学习:《PHP视频教程》
以上就是php导出csv中文乱码怎么办的详细内容,更多请关注其它相关文章!
上一篇: php网站防止刷流量攻击方法_PHP教程
下一篇: php网站乱码
推荐阅读
-
php插入中文到sqlserver 2008里出现乱码的解决方法
-
请教php+mysql中文字符乱码问题,麻烦大家给提提建议
-
解析使用substr截取UTF-8中文字符串出现乱码的问题_PHP
-
php导出数据到excel文件 php导出excel乱码问题
-
PHP 生成中文验证码乱码问题解决(1/2)
-
php url地址栏传中文乱码解决方法集合_PHP教程
-
php PDO中文乱码解决办法
-
PHP json_encode中文乱码问题的解决办法_PHP
-
windows internet explorer Windows下利用Gvim写PHP产生中文乱码问题解决方法
-
php输出内容显示乱码怎么办_PHP教程