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

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

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

一般情况下,我们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函数解决。这个方法对我的问题有效。

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

分享给朋友:

相关文章

关于zblog程序手机版的一点想法

玩博客的人,特别是老家不在自己目前所在地或者常常出远门的人,都会遇到这个问题,博客,特别是自己苦心经营的个人网站可能会在自己回老家或者其他没有网络使用的情况下被自己冷落,于是我研究了一下zblog手机…

关于博客留言评论

谁人开个人博客,都希望留言多多,评论多多,不过,要是有很多垃圾留言评论,想必也是甚为苦恼,挚诚的评论才是令人愉快、令人满足的,即便只是短短几个字的言语…

Windows组件没有Internet信息服务(IIS)选项解决设置方法

通过控制面板的添加删除程序,不少人都会遇到Windows组件没有Internet信息服务(IIS)选项的情况,当然这针对需要安装IIS服务器的人来说,但是我们可以通过一些方法来恢复Windows组件中…

ZBtoSnWb新浪微博插件无法调用摘要解决

使用ZSXSOFT开发的zblog新浪微博插件更新文章或者修改文章的时候,摘要无法显示,通过对插件的修改可以修复这一个问题,这个修改方法也简单,只需要在该插件include.asp文件的代码里加入一句…

APP推广,叫朋友转发朋友圈正确吗?

好产品必须要符合用户的渴望,为他们带来价值。如果他们愿意花很多时间/金钱在上面,并且规律性的回访/回购,那才是真正的价值。所以新产品上线的第一步不是靠大量人脉来广为散播来吸引注意力,而是要少量的通过自…

分分钟被耗完:我的手机流量去哪儿了?

据中国青年报报道,微信6.0版本新增的“小视频”功能聚集了很高的人气,但也有网友抱怨在使用该功能后,手机上网流量“分分钟”被耗完,甚至朋友圈被刷到停机。这些网友大多心中都会有这样的疑问,我的手机流量去…

发表评论

访客

看不清,换一张

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