Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用League/CSV导出CSV不会对umlauts进行编码_Php_Laravel_Csv_Utf 8_Byte Order Mark - Fatal编程技术网

Php 使用League/CSV导出CSV不会对umlauts进行编码

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中正常工作,我必须: 打开一个空工作表 数

我正在使用以下软件包导出Laravel 5.7中的模型:

这将创建export.csv文件ok,但任何UMLAUT都被错误地渲染,例如√∂. 我本以为设置BOM就能解决这个问题。有人有解决办法吗


编辑:问题不是导出,而是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,
    ];
}