Php BOM或\xFF\xFE显示 在csv文件中
需要将数组转换为显示在csv文件中 下面是示例代码Php BOM或\xFF\xFE显示 在csv文件中,php,csv,Php,Csv,需要将数组转换为显示在csv文件中 下面是示例代码 $output=array( array('firstname' => 'latviešu', 'lastname' => 'Johnson', 'age' => 25), array('firstname' => 'русский', 'lastname' => 'latviešu', 'age' => 25), array('firstname' => 'šAmanda', 'lastname' =
$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代码>
如果删除\xFF\xFE
,则没有此类字符,但文本通常不可读。试图修剪
,但通常不可读
如何删除该字符
解决方案
这是最终的解决方案
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;
}
但下一个问题与代码有关
在数组的末尾数组('firstname'=>'english','lastname'=>'crmkССц','age'=>25.04),
是25.04
;但是,在csv中获取25.Apr
如何解决此问题?一块UTF-16编码文本需要以BOM开头。BOM表不得在文本中重复。您当前正在为每一行输出BOM表。不要这样做,只需在文件开头输出一次。一块UTF-16编码的文本需要以BOM开头。BOM表不得在文本中重复。您当前正在为每一行输出BOM表。不要这样做,只需在文件开头输出一次。我认为您需要在文件开头添加BOM表,但是
mb\u convert\u编码将其添加到每行。如果可能,请尝试以下操作:
$utf = '';
foreach($output as $row) {
$utf .= (implode("\t", $row)). "\r\n" ;
}
$utf = mb_convert_encoding($implode, 'UTF-16LE', 'UTF-8');
echo $utf;
我认为您需要在文件的开头添加BOM表,但是mb\u convert\u encoding
会在每一行添加BOM表。如果可能,请尝试以下操作:
$utf = '';
foreach($output as $row) {
$utf .= (implode("\t", $row)). "\r\n" ;
}
$utf = mb_convert_encoding($implode, 'UTF-16LE', 'UTF-8');
echo $utf;
是的,我知道。但是什么是解决方案。。。如果不回显\xFF\xFE
,则文本不可读。如果要回音,就要那个角色……是的,我知道。但是什么是解决方案。。。如果不回显\xFF\xFE
,则文本不可读。如果要回音,就要那个角色…哦,谢谢!!!几乎一整天都在试图找到解决办法。哦我将发布工作代码。顺便说一下,下一个问题。。。。在数组中'age'=>25.04
,但在输出中为25.04。如何修复它?你是说Excel如何解释“25.04”?是的,如果我能理解Excel如何解释25.04,思考如何获得解决方案会很有用……不知道。我讨厌激情四射。四处搜索,我敢肯定我以前看过讨论过的内容。:)谢谢:)我必须使用Excel/csv。。。编码会计软件,有必要能够出口到EXCEL哦,谢谢!!!几乎一整天都在试图找到解决办法。哦我将发布工作代码。顺便说一下,下一个问题。。。。在数组中'age'=>25.04
,但在输出中为25.04。如何修复它?你是说Excel如何解释“25.04”?是的,如果我能理解Excel如何解释25.04,思考如何获得解决方案会很有用……不知道。我讨厌激情四射。四处搜索,我敢肯定我以前看过讨论过的内容。:)谢谢:)我必须使用Excel/csv。。。编码会计软件,必须能够导出到excel