У меня есть приложение, разработанное на основе WAMP с PHP 5.4, полностью сконфигурированное с UTF-8.
Теперь мне нужно сгенерировать .csv файлы. Кодировка должна быть ISO-8859-1 для требований вне моего контроля.
Это очень маленькие таблицы, и я редактирую в строке с
iconv («UTF-8», «ISO-8859-1 // TRANSLIT», $ each_data);
Затем я загружаю файл с этим:
header('Content-Type: text/csv; charset=ISO-8859-1');
header('Content-Disposition: attachement; filename="'.$filename.'";');
echo $string_with_all_data;
exit(0);
Ну, на моем сервере разработки нет проблем, файл создается по мере необходимости. Но на рабочем сервере сгенерированный .csv вначале включает спецификацию UTF-8.
Теоретически оба сервера идентичны. Тем не менее, один генерирует CSV с позорными 3 символов в начале (я») а другой нет. Оба CSV правильно закодированы в ISO-8859-1.
Я пробовал тысячу способов, но всегда результаты разные в обоих сгенерированных файлах. (fputcsv, ob_start (), Content-Type: bla-bla и т. д. и т. д.)
Я полагаю, что должна быть какая-то разница в конфигурации php или apache, которая изменяет вывод, но я не смог его найти.
Задача ещё не решена.
Других решений пока нет …