php专区

 首页 > php专区 > PHP应用 > 常用功能 > PHP生成CSV文件用Excel打开乱码问题 - php高级应用

PHP生成CSV文件用Excel打开乱码问题 - php高级应用

分享到:
【字体:
导读:
          PHP生成UTF-8编码的CSV文件用Excel打开中文显示乱码,是由于输出的CSV文件中没有BOM,我们只要简单处理一下即可,那么如何在PHP中输出BOM呢?在所有内容输出之前:...

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

PHP生成UTF-8编码的CSV文件用Excel打开中文显示乱码,是由于输出的CSV文件中没有BOM,我们只要简单处理一下即可,那么如何在PHP中输出BOM呢?在所有内容输出之前:

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

例.php生成csv时我们可以这样:

  1. $now = gmdate("D, d M Y H:i:s");  
  2. header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");  
  3. header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");  
  4. header("Last-Modified: {$now} GMT");  
  5.    
  6. // force download  
  7. header("Content-Type: application/force-download");  
  8. header("Content-Type: application/octet-stream");  
  9. header("Content-Type: application/download");  
  10.    
  11. // disposition / encoding on response body  
  12. header("Content-Disposition: attachment;filename={$filename}");  
  13. header("Content-Transfer-Encoding: binary");  
  14. $items_data=array(  
  15. '0'=>array('title'=>'test test test1'),  
  16. '1'=>array('title'=>'test test test2'),  
  17. '2'=>array('title'=>'test test test3')  
  18. )  
  19. print(chr(0xEF).chr(0xBB).chr(0xBF));//设置utf-8 + bom ,处理汉字显示的乱码  
  20. echo array2csv($items_data);  
  21.    
  22. function array2csv(array &$array)  
  23. {  
  24.    if (count($array) == 0) {  
  25.      return null;  
  26.    }  
  27.    ob_start();  
  28.    $df = fopen("php://output"'w');  
  29.    fputcsv($dfarray_keys(reset($array)));  
  30.    foreach ($array as $row) {  
  31.       fputcsv($df$row);  
  32.    }  
  33.    fclose($df);  
  34.    return ob_get_clean();  
  35. }  
  36. ?> 

还有一种办法就是使用Office,打开Microsoft wordlink_affiliate">Office 2010 Excel,数据-自文本,导入此csv格式文件,同样要求选择编码,这里选择UTF-8,打开后,发现乱码消除.

补:UTF-8是在互联网上使用最广的一种unicode编码的实现方式。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度.

分享到:
php中Memcached连接超时问题解决办法 - p...
php中Memcached连接超时问题解决办法 今天起看发现服务器的nginx产生大量日志了,并且提示PHP Warning: Memcache::connect(): Can\'t connect to 127.0.0.1:11211, Connection timed out (110) in,后来几经周折找出问题所在了。 在一次例行检查日志的时候,发现Nginx日志中出现了大量...
PHP Fatal error: Call to undefined fun...
PHP Fatal error: Call to undefined function bcmul() 在一台处理网络支付的服务器迁移的时候,发现不能支付。 1.PHP版本为5.3.3 2.系统为Red Hat 4.1.2-54 查看apache的错误日志,发现是加密文件中一个函数bcmul()报错:PHP Fatal error:  Call to undefined function bcmul() in /php...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……