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,打开后,发现乱码消除.

dawei

【声明】:达州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。