【发布时间】:2019-08-03 00:24:06
【问题描述】:
我正在使用 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 文件 ok,但是任何变音符号都被错误地渲染(例如 √∂)。我原以为设置 BOM 会解决这个问题。有人有解决办法吗?
编辑:问题不在于导出,而是 Mac Excel 错误地显示变音符号。请参阅下面的答案。
【问题讨论】:
-
您尝试过任何编码方法吗?例如:
$reader->addStreamFilter('convert.iconv.ISO-8859-15/UTF-8');? -
补充一下,元音变音不再是
√∂,现在是√ɬ∂。
标签: php laravel csv utf-8 byte-order-mark