Я создаю 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
. Если вам нужна более подробная информация, см. Здесь:
Попробуйте функцию iconv:
http://php.net/manual/en/function.iconv.php
Чтобы преобразовать элементы массива, вы переходите к функции fputcsv в нужную кодировку.
fputs( $fp, $bom = chr(0xEF) . chr(0xBB) . chr(0xBF) );
Попробуй, это сработало для меня !!!