【问题标题】:PHP CSV export saves as unicode text instead of CSVPHP CSV 导出保存为 unicode 文本而不是 CSV
【发布时间】:2015-07-03 08:33:16
【问题描述】:

我在从 php 导出到 csv 时遇到问题。当我导出到 csv 时,它工作正常。我可以打开它并编辑它。但是当我想“另存为”编辑过的文件时,它会说 另存为 Unicode 文本 (.txt)

我想直接保存为 CSV。导出的文件名具有 CSV 扩展名。这是我的代码:

    $filename = "export-".date("d-m-Y").".csv";
    ob_end_clean();
    $filePath = 'php://output';
    header('Content-Encoding: UTF-8');
    header('Content-Type: application/csv; charset=UTF-8');
    header('Content-Disposition: attachement; filename="'.$filename.'";');
    $f = fopen($filePath, 'w');
    echo "\xEF\xBB\xBF"; // UTF-8 BOM

    $header = array();
    // GET CURRENT HEADERS
    foreach ($data[0] as $key => $value) {
        array_push($header,$key);
    }
    fputcsv($f, $header, $delimiter);
    //unset($data['headers']);
    foreach ($data as $line) {
        fputcsv($f, $line, $delimiter);
    }
    fclose($f);

我尝试了几种不同的标头,但都没有奏效。我用谷歌搜索并搜索了 Stackoverflow,但我似乎是唯一一个遇到这个问题的人。有人熟悉这个吗?

【问题讨论】:

    标签: php csv unicode export-to-csv


    【解决方案1】:

    查看 UTF-8 BOM。

    有一个类似的问题,删除 BOM 阻止了这种行为,但需要确认 UTF-8 字符仍然正确显示等。尚未完全测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 2010-10-16
      • 2012-05-23
      相关资源
      最近更新 更多