php - 如何使用 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;
解决方案
我还没有代表发表评论,但您可能正在这里寻找这个解决方案:https ://stackoverflow.com/a/49561209/3323348
另一方面,如果您以 Excel 用户为目标,并且希望使整个导入体验尽可能地流畅,而不是考虑创建 .xlsx 文件而不是 CSV(借助PHPOffice 电子表格等库- 确保阅读有关如何从数组中填充工作表的信息)。
推荐阅读
- javascript - 在 Json 数据内容上用逗号替换点
- amazon-web-services - 修复缓存代理的 Squid 配置?
- shell - 如何获取不同时区的日期和时间?
- typescript - 带有回调的异步/等待服务响应问题
- xamarin.forms - Xamarin.Forms 使用 xaml 中的参数打开 ContentView
- sonarqube - 拉取请求构建未在 SonarQube 中显示问题
- java - 通过使用流的谓词返回嵌套的for循环第一个元素
- java - 在休眠中;如果任何子行被更新,有没有办法更新顶级“updatedDate”列?
- reactjs - 再次应用过滤器时,React-table 不显示有效的页码
- azure-data-explorer - has_any 具有 > 10K 值