如何解决如何在 Laravel 中使用 Laravel Excel 设置导出 csv 的编码
我使用 Laravel Excel 在 Laravel 中导出 CSV 文件。 如何设置导出 csv 文件的编码。
我尝试了几种方法:
- 更改
excel.PHP
中的配置
'use_bom' => false,
- 在导出前使用 mb_convert_encoding 将内容转换为。
$exportData = mb_convert_encoding($exportData,"SJIS","UTF-8");
$pblClassExport = new \App\Exports\PblClassExport($exportData,'test.csv');
但它不起作用。 csv 文件的编码根据文件内容自动更改:( 我希望得到你的帮助。 非常感谢!
..................... 更新...................... ......
我解决了。
让我在这里分享我的解决方案。
Laravel Excel 默认不支持。
但我们可以通过简单的方式做到这一点。
-
转换为另一种编码:mb_convert_encoding https://docs.laravel-excel.com/3.1/exports/collection.html#storing-raw-contents
-
下载 csv。
$exportedobject= new \App\Exports\ClassExport($exportDataArray,$fileName);
$csvContent = \Excel::raw($exportedobject,$exportedobject->writerType);$csvContent = mb_convert_encoding($csvContent,'SJIS','auto');
// 就我而言,我将我的 csv 上传到 S3。 $storageInstance = \Storage::disk('s3_import_csvs');
$putFileOnStorage = $storageInstance->put($fileName,$csvContent);
解决方法
您需要配置您的 PblClassExport.php
标头
在PblClassExport.php
/**
* Optional headers
*/
private $headers = [
'Content-Type' => 'text/csv','Content-Encoding'=> 'SHIFT-JIS' // somthing like this ?
];
我还没有这样做,但我认为它会起作用
参考链接
https://docs.laravel-excel.com/3.1/exports/exportables.html#exportables
更新
您可以逐行编码
public function bindValue(Cell $cell,$value)
{
$value = mb_convert_encoding($value,"SJIS");
return parent::bindValue($cell,$value);
}
参考链接 https://www.gitmemory.com/issue/Maatwebsite/Laravel-Excel/1886/552849170
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。