Сохранение CSV, созданного PHP, непосредственно в кодировке ISO

Я пытаюсь создать файл CSV, используя PHP. Я хочу кодировку ISO-8859-1.
До сих пор мне удалось создать файл CSV, но он имеет кодировку UTF-8.

Я смог заставить его работать с utf8_decode благодаря этот вопрос который показывает, как преобразовать его из ISO в CSV, но моя цель состоит в том, чтобы:

Создайте файл напрямую в кодировке ISO-8859-1 напрямую.

Вот мой код (без декодирования, спросите, хотите ли вы его тоже):

    $columns = array(
'option1' => 'Option1 title',
'option2' => 'Option2 title',
'option3' => 'Option3 title'
);

/* Setting default values for the array */

$default = array(
'option1' => 'value1',
'option2' => 'value2',
'option3' => 'value3'
);

/* Creating the CSV file */

$fp = fopen('/tmp/' . $this->fileName, "w");

if ($fp) {
fputcsv($fp, array_values($columns), ";");

foreach ($legListArray as $row) {
$data = array();

foreach ($columns as $key => $_dummy) {

if (substr($key, 0, 7) == "_field_") {
$data[] = $row[$key];
} else {
$data[] = $default[$key];
}
}

fputcsv($fp, $data, ";");
}

fclose($fp);
}

1

Решение

Просто сопоставить массив с помощью utf8_decode при звонке fputcsv,

У вас есть только две строки, которые затрагиваются:

fputcsv($fp, array_map('utf8_decode', array_values($columns)), ";");
...
fputcsv($fp, array_map('utf8_decode', $data), ";");

Или вы можете сделать utf8_decode при построении массива, т.е.

$data[] = utf8_decode($row[$key]);
...
$data[] = utf8_decode($default[$key]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]