okovalev
@okovalev

PHP to CSV. Крогозябры при открытие файла в excel в кодировки UTF-8. Что делать?

БД в UTF-8, файл в UTF-8.
Сsv тоже в UTF-8, а EXCEL пытается открыть его в ANSI.
Что делать?
global $begin_date;
	global $end_date;
	
	header("Content-type: text/csv");
	header("Content-Transfer-Encoding: UTF-8");
	header("Content-Disposition: attachment; filename=[$begin_date][$end_date].csv");
	header("Pragma: no-cache");
	header("Expires: 0");
	
	//$result = $mysqli->query($sql);
	echo "sip;clid;record;call_sec;call_min;y;m;d;h;m\n";
	//while ($line = $result->fetch_assoc()) {
		//$datetime = date_timestamp_get(date_create($line['datetime']));
		//echo "\n";
	//}
	exit;
  • Вопрос задан
  • 1293 просмотра
Решения вопроса 1
@ynblpb_spb
дятел php
https://sapeg.in/2013/12/527/

Иными словами после отправки всех ваших заголовков добавьте
echo "\xFF\xFE";
и потом уже ваш цикл с выводом инфы
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
t-alexashka
@t-alexashka
Сразу пишу legacy код
header("Content-type: text/csv; charset=utf-8");
это как вариант.

и вы уверены что эксель именно в ansi пытается открыть а не в win-1251? или koi8-r? возможно он пытается подстроить файл под стандартную кодировку ОС.
Ответ написан
Комментировать
@Sumor
В старых экселях была галочка "подтверждать преобразование при открытии". После её включения, при открытии csv файла появлялся диалог открытия с выбором параметров, в том числе и кодировки.
В новых версиях можно воспользоваться "Мастером импорта текста" https://support.office.com/ru-ru/article/мастер-им...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы