【问题标题】:write utf-8 characters to file with fputcsv in php在 php 中使用 fputcsv 将 utf-8 字符写入文件
【发布时间】:2014-02-24 13:01:09
【问题描述】:

我想尝试在 PHP 的 CSV 文件中写入波斯字符,我正在使用 fputcsv 函数,但是如何使用 fputcsv 将 UTF-8 字符写入 CSV 文件?

我的部分代码:

$df = fopen($filepath, 'w');
fputcsv($df, array($coupon->code, $discount->label));

【问题讨论】:

    标签: php encoding character-encoding


    【解决方案1】:

    试试这个:

    $df = fopen($filepath, 'w');
    fprintf($df, chr(0xEF).chr(0xBB).chr(0xBF));
    fputcsv($df, array($coupon->code, $discount->label));
    

    fprintf($df, chr(0xEF).chr(0xBB).chr(0xBF)); 行写入文件头以进行正确编码。

    【讨论】:

    • 您还必须从 excel 角度考虑。确保 Excel 已经以 UTF-8 编码
    • 很好的解决方案。谢谢哈代!
    • 您能否解释一下这三个字符是什么以及它们在解决 UTF8 问题时的目的是什么?
    • @AhmadBaktashHayeri 这些字节构成了 UTF-8 的字节顺序标记 (BOM)
    • 我的英雄,拯救了我的一天:-*
    【解决方案2】:

    也试试这个:

    $df = fopen($filepath, 'w');
    $array = array($coupon->code, $discount->label);
    $array = array_map("utf8_decode", $array);
    fputcsv($df, $array);
    

    【讨论】:

    • 这个答案有什么作用?
    • 这会将您的 UTF8 字符串解码为单字节 ISO-8859-1。这 不是 OP 所要求的。
    • @FarisRayhan 这里也一样.. :(
    • 这在我看来更清楚,工作由 utf8_decode 完成,不需要读者遵守 BOM。
    【解决方案3】:

    如果您想为 excel 创建一个 UTF-8 文件,请使用这个简单的解决方案:

    $fp = fopen($filename, 'w');
    
    //add BOM to fix UTF-8 in Excel 
    fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
    

    在官方PHP页面上查看原始答案here

    【讨论】:

      【解决方案4】:

      与其他人相似,但对我有用

      fputs($output_file, chr(0xEF) . chr(0xBB) . chr(0xBF) );
      

      fputcsv你的数据之前

      【讨论】:

        猜你喜欢
        • 2015-02-23
        • 2011-08-31
        • 2014-04-06
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        • 2011-09-06
        • 2011-06-16
        相关资源
        最近更新 更多