代码之家  ›  专栏  ›  技术社区  ›  Gnuffo1

PHP生成的csv文件正在Excel2007中显示一个英镑符号()。

  •  9
  • Gnuffo1  · 技术社区  · 14 年前

    我正在用以下头命令生成csv文件:

    header("Content-type: text/csv; charset=utf-8; encoding=utf-8");
    header('Content-Disposition: attachment; filename="products.csv"');
    

    如果我在Excel2007中打开该文件,那么无论在何处都会出现一个符号。但是,如果我在记事本+中打开文件,那么磅符号看起来很好;同样,如果我将内容类型更改为文本/纯文本并去掉附件头,那么磅符号在浏览器中会正确显示。

    一个奇怪的事情是,如果我在记事本+中进入“格式”菜单,文件似乎是用“UTF-8”编码的,没有BOM。如果我将其更改为“以UTF-8编码”,然后保存文件,那么磅符号将正确显示在Excel中。有没有一种方法可以使文件通过PHP以这种编码方式保存?

    3 回复  |  直到 10 年前
        1
  •  12
  •   bfncs    10 年前

    产量 0xEF 0xBB 0xBF 在发出csv数据之前。如果处理内容长度头,不要忘记将其增加3。

    header('Content-type: text/csv;');
    header('Content-Length: ' + strlen($content) + 3);
    header('Content-disposition: attachment;filename=UK_order_' . date('Ymdhis') . '.csv');
    echo "\xef\xbb\xbf";
    echo $content;
    exit;
    
        2
  •  9
  •   user769889    13 年前

    使用utf8_decode()-对我有效

        3
  •  0
  •   Mike Wells    10 年前
    header("Expires: Mon, 26 Nov 1962 00:00:00 GMT");
    header("Last-Modified: " . gmdate('D,d M Y H:i:s') . ' GMT');
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    header('Content-Type: text/csv;');
    header("Content-Disposition: attachment; filename=".$savename);
    echo utf8_decode($csv_string);
    

    上面由用户769889发布,但我错过了它,因为我对这个v-烦人的问题感到沮丧,所有这些问题现在都解决了,而且还在工作。希望这能帮助别人…

    推荐文章