当前位置:首页 > 数字化与技术

PHP用fopen打开csv文件fgetcsv读取中文乱码解决思路

文玑阁5年前 (2021-04-22)数字化与技术20110

一般情况下,我们php编码都是utf-8,但是程序读取csv的时候,经常出现中文乱码。

网上出现了很多方法,其实大部分都是天下文章一起抄,有没有试过不知道,反正我试了大半天。

第一种:用iconv函数转换的。

$fh=fopen("upload/loaddatatest.csv","r");
while ($line=fgetcsv($fh,1000,",")){
    $Name=$line[0];
$Name=iconv('gb2312','utf-8',$line[0]);    //涉及中文的才要转换,乾元轩注,或者配合iconv(‘GBK',”UTF-8//TRANSLIT//IGNORE”,$str);
echo $Name;
$Age=$line[1];
$Phone=$line[2];
$query="INSERT INTO one (name,age,phone) VALUES ('$Name','$Age','$Phone')";
mysql_query($query,$con);
}

我测试,结果失败。

继续找方案,

第二种:

header("Content-Type: application/force-download");
header("Content-type:text/csv;charset=gb2312");
header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv");
echo chr(0xEF).chr(0xBB).chr(0xBF);          //直接字符转换
echo "收件人邮箱,收件人姓名,发送时间\r";
ob_end_flush();
foreach($list as $rs)
{
   echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r";
   flush();
}
exit;

我测试,还是失败。

第三种方案:

去修改php.ini文件的编码,放弃。

第四种方案:

<?php
    *//读取csv文件的代码略,可见第一种方法的代码片段
     $output = mb_convert_encoding($mycsvfile[$trow][10], "UTF-8", "GBK");
     echo $output;
 ?>

读取文件后,用mb_convert_encoding函数解决。这个方法对我的问题有效。

可能方法都是有效的,不过看具体情况。总之就是要转码,科学转码,合理上网。

分享给朋友:

相关文章

如何修改网页编码gb2312与utf-8

网页编码一般gb2312或者utf-8比较流行,对于中国大陆的大部分浏览器而言,编码为gb2312都能识别,而加上国外的浏览器来说,可能utf-8更受欢迎,暂且定utf-8编码为通用编码吧,所以有时候…

优化zblog添加广告代码

zblog是一个优秀的个人博客程序,它简单易用,当然,如果能给自己的zblog个人博客添加一些广告代码,借着广大网友的力量赚取点儿广告费,也是非常好的事情,如果想给自己的zblog系统个人博客添加广告…

创建个人博客的目的

每个人开设个人网站或者个人博客的目的都不尽相同,也许只是想练练SEO的能力,也许是想通过这个个人博客来营销某些产品,甚至是推广自己,也可能一时脑子进水,想要自己拥有一个网站的(比如我),当然,也有纯粹…

修改zblog版权信息及对删除的个人看法

我博客底部的内容有Powered By Z-Blog,这部分是保留zblog的版权信息的,这说明本博客系统采用的是zblog程序,并有表示感谢的意思,所以除非人家明说授权任你修改删除,否则最好保留…

博客流量之搜索引擎来路

博客流量之搜索引擎来路

乾元轩博客并没有什么流量,都是靠着几篇琐碎的文章从一些大牌搜索引擎那里分得点滴流量,这当然不是假话,有第三方流量统计工具的统计数字作证,这十几二十个ip一天虽然不值一提,但是觉得还挺有意思挺好玩的…

有两个账户时让Administrator账户显示并自动登录的办法

电脑登录出现欢迎屏幕后,显示Administrator账号和新建管理员账号的办法。…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。