Сохранение CSV, созданного PHP, непосредственно в кодировке ISO - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь создать файл 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 Ответ

0 голосов
/ 18 сентября 2018

Просто отобразить массив , используя 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]);
...