使用League / CSV导出CSV不会对变音符号进行编码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用League / CSV导出CSV不会对变音符号进行编码相关的知识,希望对你有一定的参考价值。
我正在使用League/CSV包在Laravel 5.7中导出模型:
public function export(Request $request)
{
$people = Person::all();
$location = 'export.csv';
$csv = Writer::createFromPath($location, 'w');
$csv->setOutputBOM(Writer::BOM_UTF8);
$csv->setDelimiter(';');
foreach ($people as $person) {
$csv->insertOne($this->serializePerson($person));
}
return response($location);
}
protected function serializePerson($person)
{
return [
$person->name,
$person->age,
];
}
这会创建export.csv
文件,但是任何变音都会被错误地渲染(例如√∂
)。我原以为设置BOM会解决这个问题。有没有人有办法解决吗?
编辑:问题不是导出,它是Mac Excel错误地显示变音符号。请参阅下面的答案。
答案
我的问题制定得很糟糕,但我会在这里留下答案,以防其他人有同样的问题。该文件实际上是正确导出的:如果我在文本编辑器中打开它,则正确形成了变音符号。
为了让它在Excel中正常工作(在Mac上),我不得不:
- 打开一个空的工作表
- 数据>获取外部数据>导入文本文件...
- 从File origin下拉列表中,选择“Unicode(UTF-8)”
以上是关于使用League / CSV导出CSV不会对变音符号进行编码的主要内容,如果未能解决你的问题,请参考以下文章