编码法语字符,csv - PHP

igetnqfo  于 2022-12-06  发布在  PHP
关注(0)|答案(3)|浏览(141)

我正在做一个导出简单CSV的项目。到目前为止,只要我使用英语字符,我的代码就能工作并生成CSV。
一些列名将是法语,并希望能够编码。
这是我的资料

<?php 
    // open the file "demosaved.csv" for writing
    $file = fopen('myfrench-export.csv', 'w');
    // save the column headers
    fputcsv($file, array('Question', 'Réponse 1/4', 'Réponse 2/4', 'Réponse 3/4', 'Réponse 4/4', 'Total completé', 'Total non-completé', 'Total cumulatif'));

    // Sample data. This can be fetched from mysql too
    $data = array(
        array('Data 11', 'Data 12', 'Data 13', 'Data 14', 'Data 15'),
        array('Data 21', 'Data 22', 'Data 23', 'Data 24', 'Data 25'),
        array('Data 31', 'Data 32', 'Data 33', 'Data 34', 'Data 35'),
        array('Data 41', 'Data 42', 'Data 43', 'Data 44', 'Data 45'),
        array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55'),
        array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55'),
        array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55'),
        array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55'),
    );

    // save each row of the data
    foreach ($data as $row)
    {
        fputcsv($file, $row);
    }

    // Close the file
    fclose($file); ?>
hi3rlvi2

hi3rlvi21#

经过一番检查后,我找到了这个答案,我通过应用utf8_decode调整了这条线,结果成功了。
基本上我取代了
fputcsv($file, array('Question', 'Réponse 1/4', 'Réponse 2/4', 'Réponse 3/4', 'Réponse 4/4', 'Total completé', 'Total non-completé', 'Total cumulatif'));

$array = array_map("utf8_decode", array('Question', 'Réponse 1/4', 'Réponse 2/4', 'Réponse 3/4', 'Réponse 4/4', 'Total completé', 'Total non-completé', 'Total cumulatif'));

这一招奏效了!

omqzjyyz

omqzjyyz2#

使用bom允许在excel中显示特殊字符。
此代码可以帮助您:

// Open the file "demosaved.csv" for writing
$file = fopen('myfrench-export.csv', 'w');

// Mandatory: Use bom to allow to display special characters with excel
fwrite($file, $bom = chr(hexdec('EF')).chr(hexdec('BB')).chr(hexdec('BF')));

// Save the column headers
fputcsv($file, array('Question', 'Réponse 1/4', 'Réponse 2/4', 'Réponse 3/4', 'Réponse 4/4', 'Total completé', 'Total non-completé', 'Total cumulatif'));

// Sample data. This can be fetched from mysql too
$data = array(
    array('Data 11', 'Data 12', 'Data 13', 'Data 14', 'Data 15'),
    array('Data 21', 'Data 22', 'Data 23', 'Data 24', 'Data 25'),
    array('Data 31', 'Data 32', 'Data 33', 'Data 34', 'Data 35'),
    array('Data 41', 'Data 42', 'Data 43', 'Data 44', 'Data 45'),
    array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55'),
    array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55'),
    array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55'),
    array('Data 51', 'Data 52', 'Data 53', 'Data 54', 'Data 55'),
);

// Save each row of the data
foreach ($data as $row)
{
    fputcsv($file, $row);
}

// Close the file
fclose($file);
djp7away

djp7away3#

这一条对我很有效:iconv("UTF-8", "ISO-8859-1//TRANSLIT", $content)

相关问题