php 将带有重音符号的数据导出到 csv

php export data with accents into csv

我有以下创建 csv 文件的代码:

$data=array();
array_push($data,"Société"); //word with french accent


header('Content-Type:text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename="test.csv"');


$fp = fopen('php://output', 'w');
foreach ( $data as $line ) {
    $val = explode(",", $line);
    fputcsv($fp, array_map('utf8_decode',array_values($val)), ',', '"');
}
fclose($fp);

但是,当我打开 csv 文件时,字符 é 被问号 ? 替换。

任何帮助如何解决这个问题?

前段时间我遇到了类似的问题,我通过在任何 csv 行之前添加 3 字节的 UTF8 表示来修复它:

header('Content-Type: application/x-download');
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: attachment; filename="export-'.time().'.csv"');

echo chr(0xEF);
echo chr(0xBB);
echo chr(0xBF);

您是否尝试删除 array_map 调用中的 "utf8_decode" 参数?

如果您在 UTF-8 字符串 上调用函数 "utf8_decode",它将 return 它采用 LATIN-1 编码不支持重音.

请参阅 utf8_decode 的 PHP 文档 > http://php.net/manual/en/function.utf8-decode.php

鼓起勇气。

我在字符串中使用了 UTF-8 个字符。我替换了

array_push($data,"Société"); //word with french accent

array_push($data,"Soci\xc3\xa9t\xc3\xa9"); //word with french accent