Php 使用League/CSV导出CSV不会对umlauts进行编码
我正在使用以下软件包导出Laravel 5.7中的模型: 这将创建export.csv文件ok,但任何UMLAUT都被错误地渲染,例如√∂. 我本以为设置BOM就能解决这个问题。有人有解决办法吗Php 使用League/CSV导出CSV不会对umlauts进行编码,php,laravel,csv,utf-8,byte-order-mark,Php,Laravel,Csv,Utf 8,Byte Order Mark,我正在使用以下软件包导出Laravel 5.7中的模型: 这将创建export.csv文件ok,但任何UMLAUT都被错误地渲染,例如√∂. 我本以为设置BOM就能解决这个问题。有人有解决办法吗 编辑:问题不是导出,而是Mac Excel错误地显示umlaut。见下面我的答案。我的问题表述得很糟糕,但我会把答案留在这里,以防其他人也有同样的问题。该文件实际上被正确导出:如果我在文本编辑器中打开它,umlaut的格式就正确了 为了让它在Mac上的Excel中正常工作,我必须: 打开一个空工作表 数
编辑:问题不是导出,而是Mac Excel错误地显示umlaut。见下面我的答案。我的问题表述得很糟糕,但我会把答案留在这里,以防其他人也有同样的问题。该文件实际上被正确导出:如果我在文本编辑器中打开它,umlaut的格式就正确了 为了让它在Mac上的Excel中正常工作,我必须: 打开一个空工作表 数据>获取外部数据>导入文本文件。。。 从文件源下拉列表中,选择Unicode UTF-8
你试过任何一种编码方法吗?例如:$reader->addStreamFilter'convert.iconv.ISO-8859-15/UTF-8'?此外,umlaut不再是√∂, 现在是√ɬ∂.
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,
];
}