Цитировать инженер поддержки Microsoft ,
Excel для Mac в настоящее время не поддерживает UTF-8
Обновление, 2017 : Это относится ко всем версиям Microsoft Excel для Mac до Office 2016 . Более новые версии (из Office 365) теперь поддерживают UTF-8.
Чтобы вывести содержимое UTF-8, которое Excel сможет успешно читать как в Windows, так и в OS X, вам нужно сделать две вещи:
Убедитесь, что вы преобразовали свой текст UTF-8 в UTF-16LE
mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');
Убедитесь, что вы добавили метку порядка байтов UTF-16LE
chr(255) . chr(254)
Следующая проблема, которая появляется только в Excel в OS X (но не Windows), заключается в том, что при просмотре файла CSV со значениями, разделенными запятыми, Excel будет отображать строки только с одной строкой и всем текстом вместе с запятыми в первом ряду.
Чтобы избежать этого, используйте вкладки в качестве отдельного значения.
Я использовал эту функцию из комментариев PHP (используя вкладки "\ t" вместо запятых), и она отлично работала в OS X и Windows Excel.
Обратите внимание, что для исправления проблемы с пустым столбцом в качестве конца строки мне пришлось изменить строку кода:
$field_cnt = count($fields);
до
$field_cnt = count($fields)-1;
Как отмечают некоторые другие комментарии на этой странице, другие приложения для работы с электронными таблицами, такие как OpenOffice Calc, собственные номера Apple и электронная таблица Google Doc, не имеют проблем с файлами UTF-8 с запятыми.
См. таблицу в этом вопросе о том, что работает и не работает для файлов Unicode CSV в Excel
В качестве дополнительного примечания я мог бы добавить, что если вы используете Composer , вам следует взглянуть на добавление League\Csv
к вашим требованиям. League\Csv
имеет действительно хороший API для создания CSV-файлов .
Чтобы использовать League\Csv
с этим методом создания CSV-файлов, посмотрите этот пример