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
我有以下创建 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