需要转换数组以显示在 csv 文件中
这是示例代码
$output=array(
array('firstname' => 'latviešu', 'lastname' => 'Johnson', 'age' => 25),
array('firstname' => 'русский', 'lastname' => 'latviešu', 'age' => 25),
array('firstname' => 'šAmanda', 'lastname' => 'Miller', 'age' => 18),
array('firstname' => 'english', 'lastname' => 'русский', 'age' => 25.04),
);
header('Pragma: public');
header('Content-type: application/x-msexcel');
header('Content-Disposition: attachment; filename="utf8_bom.xls"');
foreach($output as $row) {
$implode = (implode("\t", $row)). "\r\n" ;
$implode = mb_convert_encoding($implode, 'UTF-16LE', 'UTF-8');
echo $implode = "\xFF\xFE" . $implode;
}
csv输出是这样的
如您所见,从第二行开始,每个单词之前都有一个字符。当我在 html get 中复制字符时
。
如果 remove \xFF\xFE
,则没有这样的字符,但文本通常不可读。试过了trim
,但也不是通常可读的。
如何删除该字符?
解决方案
这是最终的解决方案
foreach($output as $row) {
if(!$flag) {
$implode = (implode("\t", array_keys($row))). "\r\n" ;
$implode = mb_convert_encoding($implode, 'UTF-16LE', 'UTF-8');
echo $implode = "\xFF\xFE" . $implode;
$flag = true;
}
$implode = (implode("\t", array_values($row))). "\r\n" ;
$implode = mb_convert_encoding($implode, 'UTF-16LE', 'UTF-8');
echo $implode;
}
但是下一个与代码相关的问题......
在数组的末尾array('firstname' => 'english', 'lastname' => 'русский', 'age' => 25.04),
是25.04
; 但是在 csv 中得到25.Apr
如何解决这个问题?