搞了很久,发现竟然是因为ms excel直接转csv文件会有问题,fgetcsv读取的csv文件是以逗号分隔,引号括起来,但是excel转的是不包含引号的
还有就是字符乱码问题,因为win 默认的是gb2312,而网站上用的都是utf-8所以会出现乱码问题,这个只要统一编码,转换下就行了
今天做项目的时候,需要个csv转json的小工具,想了下,用php完成,以下是代码:
<?php
$fileAsArray = Array();
if (($handle = fopen("test.csv", "r")) !== FALSE) {
$header = fgetcsv($handle, 1000, ",");
$row = Array();
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
foreach($header as $key => $value) {
$row[$value] = $data[$key];
}
$fileAsArray[] = $row;
}
fclose($handle);
}
var_dump($fileAsArray, json_encode($fileAsArray));
var_dump($fileAsArray, json_encode($fileAsArray));
可是我发现,以前的这篇日志,说引号会引起错误,今天发现没引号也是可以的,疑惑了。。。不晓得以前我是怎么做的。
然后看了下php手册
fgetcsv(file,length,separator,enclosure)还有第四个参数表示 字段环绕符,手册上说默认是引号,可是现在看来,引号和空白都可以