Laracsv UTF-8 кодировка - PullRequest
0 голосов
/ 23 февраля 2019

ищет решение, как экспортировать данные из базы данных в CSV с кодировкой UTF-8.Рамки Laravel.Использование плагина Laracsv.Но получение данных с разбитыми символами (изображение ниже) и функция, которая используется для получения списка:

enter image description here

public function store(Request $request)
    {
        $list_id = new Event;
        $list_id = $request->input('event_id');
        $users = Player::where('event_id',$list_id)->get(); // All users
        $csvExporter = new \Laracsv\Export();
        $csvExporter->build($users, ['name', 'surname', 'birtday', 'city', 'country', 'rating', 'tel', 'email', 'group'])->download();
    }

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Вы можете добавить заголовки к своей загрузке, но вам нужно обратиться к базовой библиотеке CSV лиги.

Сначала вам нужно получить базовый экземпляр CSV лиги, позвонив по номеру:

$csv = $csvExporter->getCsv();

Затем, чтобы Microsoft Excel правильно распознал файл как CSV-файл UTF8, вам также необходимо добавить спецификацию (https://en.wikipedia.org/wiki/Byte_order_mark).. Для этого вы можете снова использовать функции League CSV:

$csv->setOutputBOM(\League\Csv\Reader::BOM_UTF8);

Затем верните строку csv в качестве объекта ответа Laravel с такими заголовками:

return response((string) $csv)
        ->header('Content-Type', 'text/csv; charset=UTF-8')
        ->header('Content-Disposition', 'attachment; filename="whatever.csv");
0 голосов
/ 23 февраля 2019

Согласно документации пакета, он не позволяет передавать headers при загрузке.Простой обходной путь может быть

  1. Получить writer объект, который использует пакет League/CSV

    $writer = $csvExporter->build($user, ['name', 'surname', 'birtday', 'city', 'country', 'rating', 'tel', 'email', 'group'])->getCSV();
    

Ссылка ^

Теперь сохраните этот файл

Storage::disk('local')->put('download.csv', $writer->getContent()); 

Ссылка ^ .

3.Загрузите это через response объект

return response()->download('patht-to-file', 'download.csv', ['Content-Type' => 'text/csv; charset=utf-8'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...