php导出csv中文乱码怎么办

本文操作环境: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方法,添加转码功能:


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");
}

--结束END--

本文标题: php导出csv中文乱码怎么办

本文链接: https://www.lsjlt.com/news/450.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

  • php导出csv中文乱码怎么办

    php导出csv中文乱码的解决办法:1、设置header编码修改为UTF-8;2、在输出内容前先输出BOM头;3、把UTF-8转GB2312即可。
    阅读数:827 php csv
  • php 导入csv乱码问题怎么办

    php导入csv乱码问题的解决办法:1、构造一个解析函数“function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {...}”;2、读取文件到变量;3、通过“substr($s,2)”去掉BOM头即可。
    阅读数:832 csv 乱码 php
  • php添加中文乱码怎么办

    php添加中文乱码的解决办法:1、在php中的头部header设置编码方式;2、用iconv转码;3、在html中用<meat>标签声明编码。
    阅读数:569 php
  • php bom 中文乱码怎么办

    php bom中文乱码的解决办法:1、打开相应的PHP开发文件;2、添加“$bom = pack("C3",239,187,191);$strcsv =$bom.$strcsv;”即可。
    阅读数:471 php bom 乱码
  • PHP mysqli 中文 乱码怎么办

    PHP mysqli中文乱码的解决办法:1、检查并修改html文件的编码;2、修改mysql数据库的排序规则为“utf8_general_ci”;3、在执行SQL语句之前加入设置编码即可。
    阅读数:626 PHP mysqli
  • php cmd中文乱码怎么办

    php cmd中文乱码的解决办法:1、打开命令提示符窗口,执行“chcp 65001”命令;2、点击命令提示符旁边的“图标”,在展开的下拉项中,选择“属性”;3、勾选“使用旧版控制台(U)(需要重新启动,影响所有控制台)”和“丢弃旧的副本”即可。
    阅读数:189 php
  • php中xls导出乱码怎么办

    php中xls导出乱码的解决办法:1、打开相应的PHP文件;2、在产生乱码的文件中,添加“header("Content-type:application/vnd.ms-excel;charset=UTF-8");”语句即可。
    阅读数:280 乱码 xls php
  • android给php中文乱码怎么办

    android给php中文乱码的解决办法:1、打开相应php文件;2、在“json_encode”之前,把所有数组内所有内容都用“urlencode()”处理一下;3、用“json_encode()”转换成json字符串;4、用“urldecode()”将编码过的中文转回来即可。
    阅读数:909 Android php
  • bat执行php中文乱码怎么办

    bat执行php中文乱码的解决办法:1、采用Windows操作系统平台自带的记事本打开脚本文件;2、点击菜单【文件】-【另存为】操作;3、选择ANSI编码进行保存;4、在原先bat脚本文件中声明更改代码页即可。
    阅读数:454 php 乱码 bat
  • php cmd 打印中文乱码怎么办

    php cmd打印中文乱码的解决办法:1、创建一个php脚本;2、在脚本中执行cmd命令去修改当前页码字符集即可。
    阅读数:552 php cmd
  • php中文传到后台乱码怎么办

    php中文传到后台乱码的解决办法:1、使用“iconv('UTF-8', 'GB2312//IGNORE', $targetFile);”;2、使用“move_uploaded_file($tempFile, $targetFile);”。
    阅读数:613 php
  • php打印输出中文乱码怎么办

    php打印输出中文乱码的解决办法:1、打开php.ini文件;2、找到“;default.charset="UTF-8"”;3、把前面的分号去掉;4、重启apache服务,刷新页面即可。
    阅读数:886 php 乱码
  • php 文字水印中文乱码怎么办

    php文字水印中文乱码的解决办法:1、找到Windows系统上对应的字体;2、将搜索到的字体文件上传到服务器上;3、通过“yum -y install ttmkfdir”安装字体;4、通过“fc-cache”刷新字体缓存即可。
    阅读数:830 linux 水印中文乱码
  • php目录文件名中文乱码怎么办

    php目录文件名中文乱码的解决办法:1、读取指定文件夹下中文word文件,生成文件名列表;2、通过“iconv('GB2312', 'UTF-8' $v)”方式转换编码即可。
    阅读数:962 php
  • php导出mysql csv乱码问题怎么解决

    php导出mysql csv乱码问题的解决方法:1、打开相应的php文件;2、在文件头部写入BOM标识即可,代码如“fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));”。
    阅读数:821 乱码 php
  • php htmlentities 乱码怎么办

    php htmlentities乱码的解决办法:1、使用“htmlentities($str,ENT_COMPAT,"GB2312")”;2、输出“htmlspecialchars($str)”。
    阅读数:150 php htmlentities
  • php注释乱码怎么办

    php注释乱码是因为页面编码不一致导致的,其解决办法就是在相应的PHP文件中添加“header("Content-Type: text/html; charset=utf-8");”代码即可。
    阅读数:936 php 注释
  • php gd 乱码怎么办

    php gd乱码的解决办法:1、通过“iconv('gb2312','utf-8','')”转换编码;2、调用imagettftext()函数输出中文字符串即可。
    阅读数:542 php gd
  • eclipse php乱码怎么办

    eclipse php乱码是因为编码不统一,其解决办法是:1、打开项目;2、打开属性;3、将文本文件编码改成UTF-8即可。
    阅读数:769 php 乱码
  • php ie乱码怎么办

    php ie乱码的解决办法:1、在网页head标签中设置“<meta http-equiv="Content-Type" content="text/html; charset=gb2312">”;2、在“.htaccess”中添加默认charset设定信息;3、用header设定返回数据的编码信息即可。
    阅读数:280 php 乱码