【问题标题】:how can export csv file , charset utf-8 instead utf-8 without BOM in php? [duplicate]如何在 php 中导出 csv 文件,charset utf-8 而不是 utf-8 而没有 BOM? [复制]
【发布时间】:2012-12-08 05:55:03
【问题描述】:

可能重复:
Encoding a string as UTF-8 with BOM in PHP

我可以使用此代码从 php 导出 csv 文件

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');

$output = fopen('php://output', 'w');

但此代码使用字符集 utf-8 without BOM 创建文件,但我需要字符集 utf-8
有办法解决这个问题吗?

【问题讨论】:

  • 你的意思是 cvs 还是 csv 或两者兼而有之?
  • 请问文件类型是 csv。
  • 为什么需要 BOM?据我所知,标准不建议在 Unicode 中包含字节顺序标记。
  • @Daniel 我在使用 Unicode CSV 文件时遇到了同样的问题 - 它在任何文本编辑器中都可以正常打开,但是当 BOM 不存在时,可靠的旧 Excel 会出错(至少在我的机器上)。也许我做错了什么!
  • @Daniel 谢谢你的解释。我需要支持这些疯狂的应用程序,所以我会继续使用 BOM,并希望它不会在其他应用程序中引起意想不到的问题!

标签: php csv utf-8 character-encoding


【解决方案1】:

我是这样做的。

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=file.csv'));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
echo "\xEF\xBB\xBF"; // UTF-8 BOM
echo $csv_file_content;
exit();

当然,您可以将echo $csv_file_content 替换为您需要的。

【讨论】:

  • 谢谢老兄。它帮助了我。我知道通过使用那些 \xEF\xBB\xBF 会解决的。但我不知道如何实现它。你成就了我的一天
  • 以防万一其他人使用此解决方案,此代码中的header('Content-Disposition: attachment; filename=file.csv')); 行有一个额外的),应该是:header('Content-Disposition: attachment; filename=file.csv');
猜你喜欢
  • 2016-05-04
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 2017-03-19
  • 2018-12-31
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多