已有 0 位网友发表了一针见血的评论,你还等什么?
- 正文
- 点这评论:( 0人参与)
-
一般情况下,我们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函数解决。这个方法对我的问题有效。
可能方法都是有效的,不过看具体情况。总之就是要转码,科学转码,合理上网。
【相关文章】
- 2022-3-24 9:59:47excel 如何用单元格的内容 引用同名工作表并调用计数?
- 2022-3-20 17:15:47Excel中多sheet用COUNTIFS多条件计数的方法
- 2021-4-22 17:5:21PHP出现 Notice: Undefined index:...的原因及解决办法
- 2019-4-17 16:36:20adb shell和adb pull命令使用问题解决
- 2019-3-1 12:4:38[技术]photoshop修改二维码改变颜色ps变色
- 2018-4-2 20:44:20[技术]nvm-windows免安装、node多版本免安装和使用切换
- 2018-3-30 15:6:33[技术]Fiddler实现手机抓包,Android抓包https
- 2018-3-29 13:48:6Wireshark打开后显示没有找到接口windows 10操作系统