php csv乱码的解决办法:首先重写fputcsv方法;然后添加转码功能,代码如“function fputcsv2($handle, array $fields, $delimiter = "){...}”。

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 csv乱码问题,如何解决php csv乱码问题相关推荐

  1. Win10乱码了怎么解决 Win10系统乱码解决办法

    用电脑时,如果突然发现电脑出现乱码的现象,那一瞬间会觉得很头皮发麻,刚好最近就有小伙伴来问win10改了系统语言还是乱码的问题,今天小编来跟大家说说win10乱码了怎么办的解决方法,大家一起来看看吧. ...

  2. php至mysql乱码,PHP彻底解决mysql中文乱码

    彻底解决mysql中文乱码 mysql是我们项目中非经常常使用的数据型数据库. 可是由于我们须要在数据库保存中文字符,所以经常遇到数据库乱码情况.以下就来介绍一下怎样彻底解决数据库中文乱码情况. 数据 ...

  3. python乱码怎么办_解决python发送邮件乱码问题

    使用python发邮件很简单,但是遇到乱码问题很烦恼. 乱码问题有几种:有发件人名称乱码,有标题乱码,也有正文乱码的问题. 一.发件人名称乱码 要解决发件人名称乱码问题,必须使用Header,如下代码 ...

  4. php对mysql解决乱码_PHP彻底解决mysql中文乱码-阿里云开发者社区

    彻底解决mysql中文乱码 mysql是我们项目中非经常常使用的数据型数据库. 可是由于我们须要在数据库保存中文字符,所以经常遇到数据库乱码情况.以下就来介绍一下怎样彻底解决数据库中文乱码情况. 数据 ...

  5. linux下的oracle中文乱码,Linux环境解决Oracle 中文乱码

    linux下Oracle显示中文乱码 1.Oracle数据库出现乱码的原因: 操作系统与服务器一致,但客户端与服务器字符集不一致 客户端与服务器一致,但操作系统与服务器不一致 2.解决办法: 设置相关 ...

  6. mysql字符集乱码问题_解决mysql字符集乱码问题

    character-set-server/default-character-set:服务器字符集,默认情况下所采用的. character-set-database:数据库字符集. characte ...

  7. mysql 连接中文乱码_彻底解决mysql中文乱码的办法

    MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如 ...

  8. html href链接中文乱码,javascript如何解决url中文乱码?

    在日常开发当中,我们可能遇到要将某个页面的参数通过url链接拼接的方式传递到另一个页面当中,在另一个页面当中进行使用,如果传输过去的是中文,那么可能会遇到中文乱码问题,那么该如何来解决呢? JavaS ...

  9. php中文乱码问号,如何解决PHP中文乱码问题?

    作为该国家/区域内信息处理的基础,字符编码集起着统一编码的重要作用.字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类.早期的软件(尤其是操作系统),为了解决本地字符信息的 ...

最新文章

  1. java计算器的重点解决问题_java计算器问题
  2. 影像组学视频学习笔记(19)-数据标准化、归一化极简概述、Li‘s have a solution and plan.
  3. 单片机成长之路(51基础篇) - 022 N76e003 APROM模拟EEPROM驱动
  4. iOS 里面如何使用第三方应用程序打开自己的文件,调用wps其他应用打开当前应用里面的的ppt doc xls...
  5. C/C++ 函数指针调用函数
  6. rabbitmq报错:PRECONDITION_FAILED - parameters for queue ‘test-1‘ in vhost ‘/‘ not equivalent
  7. cocos2d-x的未来之旅
  8. Modbus调试软件--ModbusPoll、ModbusSlave使用详解
  9. ipv6详解_modbus之libmodbus库详解
  10. Dart入门—基础类型与正则
  11. 自我总结(五)---(学习j2ee)
  12. 异步方法的编写与使用
  13. android游戏开发学习笔之九 (学习书籍 Android游戏编程之从零开始)
  14. word写论文时给公式编号
  15. oshi因系统问题报错:IllegalStateException: Unmapped relationship: 7
  16. 悟空云课堂|第四十七期:会话固定(CWE-384: Session Fixation)
  17. 组合有功电能,组合无功电能的概念
  18. OSChina 周四乱弹 ——因为女同事衣服穿的薄 所以老板发现我没上班?
  19. 联通彻底被iPhone抛弃,失去绯闻女友
  20. 嵌入式C语言学习笔记附图

热门文章

  1. CAD卸载/完美解决安装失败/如何彻底卸载清除干净cad各种残留注册表和文件的方法...
  2. PHP-CMS框架选择 Wordpress、Drupal、October、PHPCMS、Dedecms、帝国CMS
  3. 动手开发自己的App
  4. Linux命令 -- Linux中查看文件和文件夹大小
  5. 怀疑女票出轨,于是瞒着她给她所有闺蜜发了条信息,结果...
  6. Go复合数据类型学习总结
  7. CNN主报道:凤凰生态新链游即将上线
  8. 短视频自媒体在这17个短视频必有收获,附:收益全解
  9. 【架构设计】架构学习笔记--如何画好架构图(一)
  10. 创意前沿:30个别具创意的科技广告欣赏