我正在导出一个模型在拉拉维尔 5.7, 使用League/csv包:
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
文件确定, 但任何 umlauts 呈现不正确 (例如, 作为 √∂
)。我原以为设置 BOM 就能解决这个问题。有人有解决办法吗?
编辑: 问题不在于导出, 而是 Mac Excel 显示不正确。请看我下面的答案。
我的问题制定得很糟糕, 但我将在这里留下答案, 以防其他人遇到同样的问题。该文件实际上是正确导出的: 如果我在文本编辑器中打开它, umlaut 的形成是正确的。
要使其在 Excel (在 Mac 上) 正常工作, 我必须: