Cześć, próbuję w Laravel wyeksportować dane do csv, mój kod poniżej

$clients = $this->userRepository->findBy([
    'role' => User::$rolesArr['USER']
]);

$filename = 'klienci.csv';
$columns = [
    'ID',
    'Imię i Nazwisko',
    'E-mail',
    'Telefon',
    'Rodzaj konta',
    'Potwierdzony email',
];

$callback = function () use ($clients, $columns) {
    $file = fopen('php://output', 'w');
    fputcsv($file, $columns);
    foreach ($clients as $client) {
        /**
         * @var Client $client
         */
        $row['ID'] = $client->id;
        $row['Imię i Nazwisko'] = $client->name;
        $row['E-mail'] = $client->email;
        $row['Telefon'] = $client->phone;
        $row['Rodzaj konta'] = $client->type == 'company' ? 'Firma' : 'Osoba prywatna';
        $row['Potwierdzony email'] = $client->is_active ? 'Tak' : 'Nie';;

        fputcsv($file, [
            $row['ID'],
            $row['Imię i Nazwisko'],
            $row['E-mail'],
            $row['Telefon'],
            $row['Rodzaj konta'],
            $row['Potwierdzony email'],
        ]);
    }
    fclose($file);
};

return response()->stream($callback, 200, $this->csvHeaders($filename));

w przykładzie poniżej rozwiązanie z użyciem biblioteki

 $clients = $this->userRepository->findBy([
    'role' => User::$rolesArr['USER'],
    'is_all' => true
]);

$filename = 'klienci.'.$type;

return Excel::download(new ClientsItemsExport($clients), $filename, $type == 'csv' ? ExcelType::CSV : ExcelType::XLSX, [
    'Content-Type' => "text/$type; charset=UTF-8"
])->setCharset('UTF-8');

w obu przypadkach polskie znaki nie wyświetlają się prawidłowo. Co dziwne jeśli w drugim przykładzie pobieram excel polskie znaki są normalnie. Poniżej jeszcze jeden przykład który próbowałem z ustawienie odpowiedniego kodowania

$headers = array(
    "Content-type"        => "text/csv; charset=UTF-8",
    "Content-Disposition" => "attachment; filename=klienci.csv",
    "Pragma"              => "no-cache",
    "Cache-Control"       => "must-revalidate, post-check=0, pre-check=0",
    "Expires"             => "0"
);

$columns = ['ID', 'Imię i nazwisko', 'E-mail', 'Telefon', 'Rodzaj konta', 'Potwierdzony e-mail', 'Złożone zamówienia'];
$callback = function() use($clients, $columns) {
    $output = fopen('php://output', 'w');
    fputs($output, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
    fputcsv($output, $columns);
    foreach ($clients as $client) {
        fputcsv($output, array(utf8_encode($client->id), utf8_encode($client->name), utf8_encode($client->email), utf8_encode($client->phone), utf8_encode($client->type), utf8_encode($client->is_active), 12));
    }

    fclose($output);
};

return response()->stream($callback, 200, $headers);

problem z polskimi znakami jest zarówno w danych jak i w nagłówkach