php 生成读取csv文件并解决中文乱码
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文件并解决中文乱码的更多相关文章
- Jmeter读取CSV文件,请求参数乱码
Jmeter读取CSV文件,请求参数乱码 1.修改本地配置文件,jmeter.properties,修改以下配置项 sampleresult.default.encoding=UTF-8 重启Jmet ...
- cocos2d-x:读取指定文件夹下的文件名称+解决中文乱码(win32下有效)
援引:http://blog.csdn.net/zhanghefu/article/details/21284323 http://blog.csdn.net/cxf7394373/article/d ...
- Java底层代码实现单文件读取和写入(解决中文乱码问题)
需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public cla ...
- Java处理ZIP文件的解决方案——Zip4J(不解压直接通过InputStream形式读取其中的文件,解决中文乱码)
一.JDK内置操作Zip文件其实,在JDK中已经存在操作ZIP的工具类:ZipInputStream. 基本使用: public static Map<String, String> re ...
- JAVA本地读取文件,解决中文乱码问题
JAVA本地读取文件出现中文乱码,查阅一个大神的博客做一下记录 import java.io.BufferedInputStream;import java.io.BufferedReader;imp ...
- spring使用@Value注解读取.properties文件时出现中文乱码问题的解决
解决办法 在spring中我们常常使用.properties对一些属性进行一个提前配置, spring 在读取*.properties文件时, 默认使用的是asci码, 这时 我们需要对其编码进行转换 ...
- Cocos2d-x解析XML文件,解决中文乱码
身处大天朝,必须学会的一项技能就是解决中文显示问题.这个字符问题还搞了我一天,以下是个人解决乱码问题的实践结果,希望可以给其他人一些帮助 读取xml文件代码: CCDictionary* messag ...
- unar命令解压zip文件,解决中文乱码。
unzip解压时,常出现中文乱码.可用unar来代替.
- Linux 下 vim 编辑文件,解决中文乱码,设置Tab键空格数
vim编辑文件的时候,输入中文就出现乱码 解决办法: 以哪个用户登录的就在哪个用户目录下创建文件 vimrc vim .vimrc (.创建的是隐藏文件) 文件内容: set tabsto ...
随机推荐
- 第 十五 课 Go 语言范围(Range)
Go 语言中 range 关键字用于 for 循环中迭代数组(array).切片(slice).通道(channel)或集合(map)的元素 package main import "fmt ...
- CreateRemoteThread 远程dll注入
1.dll中的内容 // dllmain.cpp : 定义 DLL 应用程序的入口点.#include "stdafx.h" BOOL APIENTRY DllMain( HMOD ...
- apache将不带www域名301重定向到带www的域名的配置方法
#强制重定向到wwwRewriteEngine OnRewriteCond %{HTTP_HOST} ^jb51.net/ [NC]RewriteRule ^(.*)$ http://www.jb51 ...
- JVM中存储类信息的三个表格
摘自:<Java Performance>第三章 Internal Class Loading Data The HotSpot VM maintains three hash table ...
- 安装Oracle 11.2.0.3 Client Win 32-bit
第一步:安装Oracle 11.2 32-bit数据库1.双击setup文件,进入安装界面 2.选择跳过升级选项 3.设置oracle安装根目录 4.确认选项,没有问题点击“安装” 第二步:创建数据库
- eclipse java 注释模板配置详解
设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元 ...
- Web性能优化 高并发网站解决 单例 已看1
Web性能优化分为服务器端和浏览器端两个方面. 一.浏览器端,关于浏览器端优化,分很多个方面1.压缩源码和图片JavaScript文件源代码可以采用混淆压缩的方式,CSS文件源代码进行普通压缩,JPG ...
- Git 之 与Github交互
我们不可能只在一台电脑上开发,白天在公司用公司电脑,晚上在家可以用自己电脑.但是这个代码怎么让两台电脑同步呢?总不能用U盘复制粘贴.太繁琐. 这里我们就可以找个代码托管的平台,帮我们做这件事. Git ...
- Pig Latin程序设计1
Pig是一个大规模数据分析平台.Pig的基础结构层包括一个产生MapReduce程序的编译器.在编译器中,大规模并行执行依据存在.Pig的语言包括一个叫Pig Latin的文本语言,此语言有如下特性: ...
- 【Android学习】Merge 优化布局
<merge />标签用于减少View树的层次来优化Android的布局 新建项目,不需要改动 运行后使用“DDMS -> Dump View Hierarchy for ...