PHP fputcsv кодирование

Я создаю csv-файл с fputcsv. Я хочу, чтобы файл csv находился в windows1251 ecnding. Но не может найти решение. Как я могу это сделать? ура

Кодировка по умолчанию для файла excel относится к конкретным машинам ANSI, в основном windows1252 . Но так как вы создаете этот файл и, возможно, вставляете символы UTF-8, этот файл не будет обрабатываться нормально.

Вы можете использовать iconv() при создании файла. Например:

 function encodeCSV(&$value, $key){ $value = iconv('UTF-8', 'Windows-1252', $value); } array_walk($values, 'encodeCSV'); 

Работа: Наслаждайтесь
используйте это перед fputcsv:

 $line = array_map("utf8_decode", $line); 

Файл будет в любой кодировке, в которой находятся ваши строки. Строки PHP – это массивы с исходными байтами, их кодировки зависят от того, откуда взялись байты. Если вы просто прочитали их из файлов исходного кода, они находятся в том, что вы сохранили исходный код. Если они из базы данных, они находятся в любой кодировке, установленной для подключения к базе данных.

Если вам нужно конвертировать из одной кодировки в другую, используйте iconv . Если вам нужна более подробная информация, см. Здесь:

  • Что каждый программист абсолютно, положительно должен знать о кодировках и наборах символов для работы с текстом
  • Работа с Unicode Front To Back в веб-приложении

Попробуйте функцию iconv:

http://php.net/manual/en/function.iconv.php

Чтобы преобразовать элементы массива, вы переходите к функции fputcsv в нужную кодировку.

 fputs( $fp, $bom = chr(0xEF) . chr(0xBB) . chr(0xBF) ); 

Попробуй, это сработало для меня !!!