好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

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个字节表示一个符号,根据不同的符号而变化字节长度.

查看更多关于PHP生成CSV文件用Excel打开乱码问题 - php高级应用的详细内容...

  阅读:61次