<?php
$file = "1.csv";
function fopen_utf8($filename){
$encoding='';
$handle = fopen($filename, 'r');
$bom = fread($handle, 2);
// fclose($handle);
rewind($handle);
if($bom === chr(0xff).chr(0xfe) || $bom === chr(0xfe).chr(0xff)){
// UTF16 Byte Order Mark present
$encoding = 'UTF-16';
} else {
$file_sample = fread($handle, 1000) + 'e'; //read first 1000 bytes
// + e is a workaround for mb_string bug
rewind($handle);
$encoding = mb_detect_encoding($file_sample , 'UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP');
}
if ($encoding){
stream_filter_append($handle, 'convert.iconv.'.$encoding.'/UTF-8');
}
return ($handle);
}
if (($handle = fopen_utf8($file, "r")) === FALSE) return;
while (($cols = fgetcsv($handle, 1000, "\t")) !== FALSE) {
print_r($cols);
}
以上是php代码
python(3.4)代码(把cvs和运行文件放在相同目录)
# encoding=utf-8
import os,codecs,sys,string
# 从当前脚本所在目录中查找csv文件
for f in os.listdir(os.path.dirname(os.path.abspath(__file__))):
# 略过非csv文件
if f[-4:len(f)] != '.csv':
continue
# 读取csv内容
content = codecs.open(f,'r','utf-16').read()
# 清除描述中的换行符
content = content.replace("\r\n", '')
# 切分行
for num, line in enumerate(content.split("\n")):
# 略过空行
if not line:
continue
# 切分字段
fields = []
for field in line.strip().split("\t"):
fields.append(field)
#print(field)
# 查看切分字段数量是否一致
print (len(fields))