加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP生成CSV文件用Excel打开发生乱码问题

发布时间:2023-04-12 14:54:32 所属栏目:PHP教程 来源:
导读:PHP生成UTF-8编码的CSV文件用Excel打开中文显示乱码,是由于输出的CSV文件中没有BOM,我们只要简单处理一下即可,那么如何在PHP中输出BOM呢?在所有内容输出之前:

print(chr(0xEF).chr(0xBB).chr(0xBF));

PHP生成UTF-8编码的CSV文件用Excel打开中文显示乱码,是由于输出的CSV文件中没有BOM,我们只要简单处理一下即可,那么如何在PHP中输出BOM呢?在所有内容输出之前:
 
print(chr(0xEF).chr(0xBB).chr(0xBF));
 
例.php生成csv时我们可以这样:
 
<?php  
 
$now = gmdate("D, d M Y H:i:s");  
 
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");  
 
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");  
 
header("Last-Modified: {$now} GMT");  

// force download  
 
header("Content-Type: application/force-download");  
 
header("Content-Type: application/octet-stream");  
 
header("Content-Type: application/download");  

// disposition / encoding on response body  
 
header("Content-Disposition: attachment;filename={$filename}");  
 
header("Content-Transfer-Encoding: binary");  
 
$items_data=array(  
 
'0'=>array('title'=>'test test test1'),  
 
'1'=>array('title'=>'test test test2'),  
 
'2'=>array('title'=>'test test test3')  
 
)  
 
print(chr(0xEF).chr(0xBB).chr(0xBF));//设置utf-8 + bom ,处理汉字显示的乱码  
 
echo array2csv($items_data);  

function array2csv(array &$array)  
 
{  
 
   if (count($array) == 0) {  
 
     return null;  
 
   }  
 
   ob_start();  
 
   $df = fopen("php://output", 'w');  
 
   fputcsv($df, array_keys(reset($array)));  
 
   foreach ($array as $row) {  
 
      fputcsv($df, $row);  
 
   }  
 
   fclose($df);  
 
   return ob_get_clean();  
 
}  
 
?>
 
还有一种办法就是使用Office,打开Microsoft wordlink_affiliate">Office 2010 Excel,数据-自文本,导入此csv格式文件,同样要求选择编码,这里选择UTF-8,打开后,发现乱码消除.
 
补:UTF-8是在互联网上使用最广的一种unicode编码的实现方式。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度.
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!