使用特殊字符将数组导出为CSV ini PHP

时间:2014-05-08 21:37:53

标签: php csv export-to-csv

我将php数组导出到csv。

错误是所有特殊字符都搞砸了(例如:áéñ),文件的开头显示field1 而不是 field1

问题正在发生,因为内容处理:附件; ,如果我评论该行,则文件创建没有任何问题(遗憾的是它被下载为 FILENAME .php扩展名。)

    # CSV headers
    header('Cache-Control: public');
    header('Content-Type: application/octet-stream');
    header('Content-type: application/csv; charset=utf-8');
    header('Content-disposition: attachment; filename='.date('Y-m-d H\hi').'.csv');

    # Columns
    $o = 'field1,field2,field3,field4';
    $o .= "\n";

    # Data
    $rows = array();
    foreach($data as $item) {
        $fields = array();
        foreach($item as $field) {
            $fields[] = $field;
        }
        $rows[] = implode(', ', $fields);
    }
    $o .= implode("\n", $rows);
    echo $o;

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

正如Dagon评论的那样,是BOM,可能会导致正在读取的文件出现问题(特别是如果它是在Windows上的CMD中完成的)。从脚本文件中删除BOM。

对于特殊字符,您可能需要转换它们,特别是如果您的源不是UTF-8。

我曾遇到类似的问题,我的解决方案是证明输入正确读取并在输出之前转换它们。

为了转换角色,我做了类似的事情:

mb_convert_case($result['products_name'], MB_CASE_UPPER, "UTF-8");

为证明我正在使用UTF-8,我发了

$connection->set_charset("utf8");

连接到我的数据库时。

保重。

相关问题