CSV всегда читается пользователями MAC, поэтому я думаю, что это проблема Mac
Я создаю CSV-файл с этим фрагментом кода (спасибо SO: p)
<?php
include("../include/include.php");
$file_new_export = '../temp/new_hve_full.php';
$query = "select * from mytable";
$result = mysql_query($query) or die("Sql error : " . mysql_error());
if (!$result)
die('Couldn\'t fetch records');
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
$hve_biodiv = unserialize($row['hve_a']);
$hve_ferti = unserialize($row['hve_b']);
$hve_phyto = unserialize($row['hve_c']);
$hve_irri = unserialize($row['hve_d']);
$hve_eco = unserialize($row['hve_e']);
$content[] = array_merge(array_values($hve_a), array_values($hve_b), array_values($hve_c), array_values($hve_d), array_values($hve_e));
if ($i == 0)
$headers = array_merge(array_keys($hve_a), array_keys($hve_b), array_keys($hve_c), array_keys($hve_d), array_keys($hve_e));
$i++;
}
$fp = fopen($file_new_export, 'w');
if ($fp && $result) {
fwrite($fp, '<?php ');
fwrite($fp, 'header(\'Content-Type: application/csv; charset=iso-8859-1\');');
fwrite($fp, 'header(\'Content-Disposition: attachment; filename="export_hve.csv"\');');
fwrite($fp, 'header(\'Pragma: no-cache\');');
fwrite($fp, 'header(\'Expires: 0\');');
fwrite($fp, '?>');
fputcsv($fp, $headers, ';');
foreach ($content as $fields) {
fputcsv($fp, $fields, ';');
}
fclose($fp);
}
?>
Все работает нормально, но я получаю некоторые буквы с неправильной кодировкой, обычно вместо "é" я получаю "È", это близко, но не хорошо ...
Если тип содержимого и имя файла относятся к html или txt файлу, то все символы хорошо отображаются, похоже, это влияет только на файлы csv, если я переключаю кодировку на Excel для Mac на западноевропейскую, то это все еще не работает ...
Не знаю, что здесь делать, я ищу простое решение, не кодирующее все файлы в utf8 или тому подобное, потому что там много данных ... Все в iso8859-1 в соответствии с моими настройками ( Кодировка BDD / IDE / PHP) ...
Спасибо за помощь