Сгенерированный PHP CSV-файл отображает £ для знака фунта (£) в Excel 2007 - PullRequest
9 голосов
/ 02 ноября 2010

Я создаю файл csv с помощью следующих команд заголовка:

header("Content-type: text/csv; charset=utf-8; encoding=utf-8");
header('Content-Disposition: attachment; filename="products.csv"');

Если я открою файл в Excel 2007, тогда я получу знак £, где бы ни появился знак £. Однако, если я открою файл в Notepad ++, то знаки фунта будут выглядеть нормально; точно так же, если я изменю тип содержимого на text / plain и избавлюсь от заголовка вложения, в браузере правильно отображаются знаки фунта.

Одна странная вещь состоит в том, что, если я захожу в меню «Формат» в Notepad ++, оказывается, что файл закодирован в «UTF-8 без BOM». Если я изменю это на «Кодировать в UTF-8», а затем сохраню файл, знаки фунта будут отображаться правильно в Excel. Есть ли способ сделать так, чтобы файл сохранялся в этой кодировке PHP?

Ответы [ 3 ]

12 голосов
/ 02 ноября 2010

Вывод 0xEF 0xBB 0xBF перед отправкой данных CSV.Не забудьте увеличить заголовок длины содержимого на 3, если вы его обрабатываете.

header('Content-type: text/csv;');
header('Content-Length: ' + strlen($content) + 3);
header('Content-disposition: attachment;filename=UK_order_' . date('Ymdhis') . '.csv');
echo "\xef\xbb\xbf";
echo $content;
exit;
9 голосов
/ 09 декабря 2011

Используйте utf8_decode () - РАБОТАЕТ ДЛЯ МЕНЯ

0 голосов
/ 21 августа 2015
header("Expires: Mon, 26 Nov 1962 00:00:00 GMT");
header("Last-Modified: " . gmdate('D,d M Y H:i:s') . ' GMT');
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header('Content-Type: text/csv;');
header("Content-Disposition: attachment; filename=".$savename);
echo utf8_decode($csv_string);

Написал, как указано выше, user769889, но я пропустил его из-за разочарования по поводу этой v-раздражающей проблемы, все исправлено сейчас и работает.Надеюсь, это кому-нибудь поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...