我在php中导出csv为:
$fp = fopen($filename, 'w');
foreach ($list as $fields) {
if(!empty($fields))
fputcsv($fp, $fields);
else
fputcsv($fp, ' ');
}
$fp = chr(255).chr(254).mb_convert_encoding($fp,"UTF-16LE","UTF-8");
fclose($fp);当我打开csv时,字体UTF_8出错。例如:防本部コーshow in file csv:ˆé˜²çœ?ƒ¨ă,³ăƒ²ăƒ‰
我能为您做点什么?谢谢
发布于 2012-09-21 17:31:12
这里已经讨论过了:
How can I output a UTF-8 CSV in PHP that Excel will read properly?
您可能还希望在替代文本编辑器中检查CSV,以排除该编辑器。
发布于 2012-09-21 17:34:15
$fp是指向文件的指针资源。它不是字符串,您不能这样做:
$fp = chr(255).chr(254).mb_convert_encoding($fp,"UTF-16LE","UTF-8"); 要将UTF-16数据写入文件,需要在写入之前进行转换,而不是在写入后进行转换:
$fp = fopen($filename, 'w');
fwrite($fp, chr(255).chr(254));
foreach ($list as $fields) {
foreach ($fields as &$field) {
$field = mb_convert_encoding($field, 'UTF-16LE', 'UTF-8');
}
fputcsv($fp, $fields);
}
fclose($fp);我不知道这是否真的输出了您需要的数据,但它修复了明显的错误。
发布于 2014-01-20 14:41:41
尝试此函数将会起作用:
public static function exportCSVFile($data = array(), $headers = array(), $delimiter = ",", $csvfilename = "CSVFile") {
ob_clean();
ob_start();
$csvfilename = $csvfilename . "_" . date("Y_m_d_h_i_s") . ".csv";
$file_handler = fopen("php://output", 'w');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/csv");
//header( "Content-Type: application/csv;charset=utf-8" );
header("Content-Disposition: attachment;filename={$csvfilename}");
header("Content-Transfer-Encoding: binary");
foreach ($data as $fields) {
$_str = implode($delimiter, $fields);
$fields = explode($delimiter, utf8_decode($_str));
fputcsv($file_handler, $fields, $delimiter, $enclosure = '"');
}
fclose($file_handler);
ob_flush();
exit();
}https://stackoverflow.com/questions/12527818
复制相似问题