今天有一同学问我为什么php生成csv文件用excel打开会出现乱码呢,下面小编来给大家找了一些常见的办法,希望此方法对各位朋友会有所帮助。
百度查证后得知
php生成utf-8编码的csv文件用excel打开中文显示乱码,是由于输出的csv文件中没有bom。
我们只要简单处理一下即可
那么如何在php中输出bom呢?
在所有内容输出之前
代码如下 复制代码
print(chr(0xef).chr(0xbb).chr(0xbf));
例.php生成csv时我们可以这样
代码如下 复制代码
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 office 2010 excel,数据-自文本,如图:
导入此csv格式文件,同样要求选择编码,如图:
这里选择utf-8,打开后,发现乱码消除,如图:
补:utf-8是在互联网上使用最广的一种unicode编码的实现方式。utf-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度
http://www.bkjia.com/phpjc/633200.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/633200.htmltecharticle今天有一同学问我为什么php生成csv文件用excel打开会出现乱码呢,下面小编来给大家找了一些常见的办法,希望此方法对各位朋友会有所帮助...