csv其实是文本文件,但是里面的内容是利用逗号分隔的。

1. 生成csv文件

 function new_csv($arr)
{
$string="";
foreach ($arr as $key => $value)
{
foreach ($value as $k => $val)
{
$value[$k]=iconv('utf-8','gb2312',$value[$k]);
} $string .= implode(",",$value)."\n"; //用英文逗号分开
}
$filename = date('Ymd').'.csv'; //设置文件名
header("Content-type:text/csv");
header("Content-Disposition:attachment;filename=".$filename);
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
echo $string;
}

生成csv文件

2.读取csv文件

网上许多封装的方法都有中文乱码问题,我这边顺手解决一下。

/*
* 读取CSV文件
* @param string $file csv文件路径
*/
function read_csv($file)
{
setlocale(LC_ALL, 'zh_CN');//linux系统下生效
$data = null;//返回的文件数据行
if (!is_file($file) && !file_exists($file)) {
die('文件错误');
}
$cvs_file = fopen($file, 'r'); //开始读取csv文件数据
$i = 0;//记录cvs的行
while ($file_data = fgetcsv($cvs_file)) {
$i++;
// if ($i == 1) {
// continue;//过滤表头
// }
$res = array();
if ($file_data[0] != '') {
foreach ($file_data as $val){
$val = mb_convert_encoding($val, "UTF-8", "GBK");
$res[] = $val;
}
$data[$i] = $res;
}
}
fclose($cvs_file);
return $data;
}

读取csv文件

是否需要过滤表头自己选择,默认不过滤

如果还有中文乱码问题,那么用下面这个

function read_csv($file)
{
setlocale(LC_ALL, 'zh_CN');//linux系统下生效
$data = null;//返回的文件数据行
if (!is_file($file) && !file_exists($file)) {
die('文件错误');
}
$cvs_file = fopen($file, 'r'); //开始读取csv文件数据
$i = 0;//记录cvs的行
while ($file_data = fgetcsv($cvs_file)) {
$i++;
if ($file_data[0] != '') {
$data[$i] = $file_data;
}
}
fclose($cvs_file);
return $data;
}

读取csv

php 生成读取csv文件并解决中文乱码的更多相关文章

  1. Jmeter读取CSV文件,请求参数乱码

    Jmeter读取CSV文件,请求参数乱码 1.修改本地配置文件,jmeter.properties,修改以下配置项 sampleresult.default.encoding=UTF-8 重启Jmet ...

  2. cocos2d-x:读取指定文件夹下的文件名称+解决中文乱码(win32下有效)

    援引:http://blog.csdn.net/zhanghefu/article/details/21284323 http://blog.csdn.net/cxf7394373/article/d ...

  3. Java底层代码实现单文件读取和写入(解决中文乱码问题)

    需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public cla ...

  4. Java处理ZIP文件的解决方案——Zip4J(不解压直接通过InputStream形式读取其中的文件,解决中文乱码)

    一.JDK内置操作Zip文件其实,在JDK中已经存在操作ZIP的工具类:ZipInputStream. 基本使用: public static Map<String, String> re ...

  5. JAVA本地读取文件,解决中文乱码问题

    JAVA本地读取文件出现中文乱码,查阅一个大神的博客做一下记录 import java.io.BufferedInputStream;import java.io.BufferedReader;imp ...

  6. spring使用@Value注解读取.properties文件时出现中文乱码问题的解决

    解决办法 在spring中我们常常使用.properties对一些属性进行一个提前配置, spring 在读取*.properties文件时, 默认使用的是asci码, 这时 我们需要对其编码进行转换 ...

  7. Cocos2d-x解析XML文件,解决中文乱码

    身处大天朝,必须学会的一项技能就是解决中文显示问题.这个字符问题还搞了我一天,以下是个人解决乱码问题的实践结果,希望可以给其他人一些帮助 读取xml文件代码: CCDictionary* messag ...

  8. unar命令解压zip文件,解决中文乱码。

    unzip解压时,常出现中文乱码.可用unar来代替.

  9. Linux 下 vim 编辑文件,解决中文乱码,设置Tab键空格数

    vim编辑文件的时候,输入中文就出现乱码 解决办法: 以哪个用户登录的就在哪个用户目录下创建文件 vimrc vim .vimrc       (.创建的是隐藏文件) 文件内容: set tabsto ...

随机推荐

  1. FreeType 管理字形

    转自:http://blog.csdn.net/hgl868/article/details/7254687 1.字形度量 顾名思义,字形度量是对应每一个字形的特定距离,以此描述如何对文本排版.    ...

  2. [我的CVE][CVE-2017-15709]Apache ActiveMQ Information Leak

    问题原因: Apache ActiveMQ默认消息队列61616端口对外,61616端口使用了OpenWire协议,这个端口会暴露服务器相关信息,这些相关信息实际上是debug信息. 会返回应用名称, ...

  3. java反射专题一

    一丶Class的理解 /* * Class类是反射的源头 * 创建一个类,通过编译(javac.exe),生成对应的.class文件,之后使用java.exe加载(JVM的类加载器完成的)此.clas ...

  4. Oracle——判断对象是否存在(未完工)

    一.系统表: 1.User_Tables:存储用户下的所有表的信息: 2.dba_tables:存储管理员权限下的所有表的信息: 3.all_tables:存储所有表的信息. 4.all_Tab_Co ...

  5. VotingClassifier

    scores : array of float, shape=(len(list(cv)),) Array of scores of the estimator for each run of the ...

  6. NSURLConnection基本用法(苹果原生)

    一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest/NSMutableURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSUR ...

  7. DAY19-Django之form组件补充

    问题1:注册页面输入为空,报错:keyError:找不到password def clean(self): print("---" ,self.cleaned_data) # if ...

  8. mahout in Action2.2-给用户推荐图书(1)-直观分析和代码

    This chapter covers  What recommenders are, within Mahout  A first look at a recommender in action ...

  9. ASP.NET MVC3 HtmlHelper用法大全

    HTML扩展类的所有方法都有2个参数:以textbox为例子public static string TextBox( this HtmlHelper htmlHelper, string name, ...

  10. 对private protected public的详解:

    #include <iostream> #include <stack> #include <queue> #include <exception> # ...