首页 > 解决方案 > 如何使用 Zend 将 UTF-8 BOM 包含到 CSV 导出中

问题描述

我可以选择将项目中的一些数据导出到 .csv 文件,我已经在响应标头中将字符集设置为 UTF-8,但是,Excel 不会通过双击文件以 UTF-8 格式打开,而且我想尽可能地保持这个过程对用户友好,所以我想避免手动导入它的需要。

根据我搜索的内容,我需要在文件的开头包含 UTF-8 BOM (0xEF,0xBB,0xBF) 字符,但我真的不知道如何使用 PHP 做到这一点,这是我当前的代码:

$response = $this->getResponse();

$headers = $response->getHeaders();
$headers->addHeaderLine('Content-Type', 'text/csv charset=UTF-8');
$headers->addHeaderLine('Content-Disposition', "attachment; filename=\"{$_GET['file']}\"");
$headers->addHeaderLine('Accept-Ranges', 'bytes');
$headers->addHeaderLine('Content-Length', strlen($data_file));

$response->setContent($data_file);

return $response;

标签: phpzend-frameworkzend-framework2

解决方案


我还没有代表发表评论,但您可能正在这里寻找这个解决方案:https ://stackoverflow.com/a/49561209/3323348

另一方面,如果您以 Excel 用户为目标,并且希望使整个导入体验尽可能地流畅,而不是考虑创建 .xlsx 文件而不是 CSV(借助PHPOffice 电子表格等库- 确保阅读有关如何从数组中填充工作表的信息)。


推荐阅读