繁体   English   中英

使用League / CSV导出CSV不会对变音符号进行编码

[英]Exporting CSV with League/CSV doesn't encode umlauts

我正在使用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上),我不得不:

  1. 打开一个空的工作表
  2. 数据>获取外部数据>导入文本文件...
  3. 从File origin下拉列表中,选择“Unicode(UTF-8)”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM