как исправить кодировку из сгенерированного файла iso8859-1 php для программы Excel - PullRequest
0 голосов
/ 14 февраля 2011

Я создаю файл Excel, который можно загрузить с веб-страницы с помощью этого фрагмента кода:

$sql = "SELECT * FROM my_table";

$ressource_sql = execute_sql($sql);

while ($row = mysql_fetch_assoc($ressource_sql)) {


    $ligne_hve.=$row['id'] . ';';
    $ligne_hve.=$row['name'] . ';';
    $ligne_hve.=$row['products'] . ';';    
    $ligne_hve .= "\n";

}
$file_hve = fopen($file_export_hve, "w+");
fwrite($file_hve, $ligne_hve);
fclose($file_hve);

Файл Excel регенерируется каждый раз, когда пользователь просматривает веб-страницу с этим кодом, весь веб-сайт - ISO8859-1, я знаю, что Excel использует странную кодировку (windows-1252), но пока я не нашел какой-либо трюки, чтобы получить французский акцент (хорошо отображается на веб-сайте) в Excel ...

Спасибо за помощь

Ответы [ 2 ]

1 голос
/ 14 февраля 2011

Вы на самом деле не генерируете файл Excel. Ваш скрипт генерирует файл CSV, используя точки с запятой. Для правильного решения вы должны заглянуть в PHPExcel или другую библиотеку .

Но, тем не менее, ваш простой выход CSV может быть преобразован в UTF-8. Рекомендуется добавить BOM , чтобы Excel обнаружил ее при отправке с неправильным типом содержимого:

file_put_contents("converted.csv", 
    "\xEF\xBB\xBF" . utf8_encode(file_get_contents("iso8859-1.csv"))
);

utf8_encode() может или не может потребоваться там. Вы не показали никакого конкретного примера. Если текст уже был в UTF-8, то обходной путь спецификации уже достаточен, и второй utf8_encode не требуется.

0 голосов
/ 14 февраля 2011
$sql = "SELECT * FROM my_table";

$ressource_sql = execute_sql($sql);

while ($row = mysql_fetch_assoc($ressource_sql)) {


    $ligne_hve.=$row['id'] . ';';
    $ligne_hve.= iconv(input charset, 'windows-1252//TRANSLIT', $row['name']) . ';';
    $ligne_hve.= iconv(input charset, 'windows-1252//TRANSLIT', $row['products']) . ';';    
    $ligne_hve .= "\n";

}
$file_hve = fopen($file_export_hve, "w+");
fwrite($file_hve, $ligne_hve);
fclose($file_hve);

Входная кодировка iso-8859-1.

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