У меня проблема с отображением специальных символов в файле CSV.Работает нормально, кроме Windows Excel.Я попытался добавить кодировку windows-1252, которая, как мне кажется, должна правильно отображать специальные символы, но это не так.Кто-нибудь может сказать мне, что мне не хватает?Мой код:
$file = tempnam(sys_get_temp_dir(), 'mycsv');
$fh = fopen($file, 'w');
$currencyOption = $account->team->user->getOption('accounting', 'currency');
$currency = config('currencies.'.$currencyOption);
if($currency)
{
$symbol = '€';//$currency['format'];
$symbol = str_replace('%s ', '', $symbol);
$symbol = str_replace(' %s', '', $symbol);
$encoding = mb_detect_encoding($symbol);
$symbol = iconv($encoding, "Windows-1252", $symbol);
}
$groups = [];
foreach($account->fees as $fee)
{
if(!isset($groups[$fee->group]))
{
$groups[$fee->group] = $fee->name . " ($symbol)";
}
}
fputcsv($fh, array_merge([___('Player')], $groups, [___('Total') . " ($symbol)"]));
foreach($account->players as $player) {
$row = [$player->name];
foreach($groups as $groupId => $groupName)
{
$val = $account->fees->where('player_id', $player->id)->where('group', $groupId)->first();
$row[] = $val ? $val->value : '0';
}
$row[] = $player->credit;
fputcsv($fh, $row);
}
$row = [''];
foreach($groups as $groupId => $groupName)
{
$row[] = '';
}
$row[] = $account->balance;
fputcsv($fh, $row);
fclose($fh);
return response()->download($file, 'account.csv', [
'Content-Encoding' => 'Windows-1252',
'Content-Type' => 'text/csv; charset=Windows-1252',
'Content-Disposition' => "attachment; filename='account.csv'",
]);