导航:首页 > 编程语言 > phpfgetcsv乱码

phpfgetcsv乱码

发布时间:2022-07-08 20:55:37

1. php读取csv文件时 用phpexcel很慢 用fgetcsv()函数中文乱码 请问还有什么excel库或函数方法来读csv文件吗

php从csv文件读取数据并输出到网页的方法

<?php
$fp=fopen('sample.csv','r')ordie("can'topenfile");
print"<table> ";
while($csv_line=fgetcsv($fp)){
print'<tr>';
for($i=0,$j=count($csv_line);$i<$j;$i++){
print'<td>'.htmlentities($csv_line[$i]).'</td>';
}
print"</tr> ";
}
print'</table> ';
fclose($fp)ordie("can'tclosefile");
?>

你可以这样试一试的啊

2. php导入csv文件输出是乱码,怎么解决

//这是我前几天回答过的一个问题下面以读取淘宝csv文件为例
if($result){//如果上传成功了,这是文件路径
if(!($handle=fopen_utf8($result,"r"))===FALSE){//调取下边函数fopen_utf8;
$errorArr=array();
$i=0;
while(($cols=fgetcsv($handle,1000," "))!==FALSE){
++$i;
if($i<4)continue;
$taobaolmsx=$cols[21];//宝贝属性;
$taobaoxxsx=$cols[30];//销售属性;
$goodsBn=$cols[33];//商家编码;

}
fclose($handle);
}

unlink($result);
}else{
echo'fileuploaderror';exit;
}

/*读取csv文件用*/
functionfopen_utf8($filename){
$encoding='';
$handle=fopen($filename,'r');
$bom=fread($handle,2);
rewind($handle);

if($bom===chr(0xff).chr(0xfe)||$bom===chr(0xfe).chr(0xff)){
//UTF16ByteOrderMarkpresent
$encoding='UTF-16';
}else{
$file_sample=fread($handle,1000)+'e';//readfirst1000bytes
//+eisaworkaroundformb_stringbug
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);
}

3. PHP fgetcsv 循环出错

fgetcsv函数的作用是从文件指针中读入一行并解析CSV字段然后返回一个包含这些字段的数组.执行一次它就读入一行,所以print_r中再次使用fgetcsv($me)后,相当于while时读了两行了,所以你打印的就是每次的偶数行了.

//原代码:
while(($i=fgetcsv($me))!==false){//读一行
print_r(fgetcsv($me));//再读一行并打印出来
}

正确的当然是:

while(($i=fgetcsv($me))!==false){
print_r($i);//读一行就打印一行
}

4. phpexcel 读取csv大文件只读取显示A列

虽然有Excel操作类,不建议使用。php操作excel本来就很不地道,表格复杂点就出错,特别是在linux系统上就更麻烦了。
CSV是通用格式,你可以用excel另存为csv格式,再交给php处理。php有专门的fgetcsv()来读取csv中的数据。

5. php导入CSV到MYSQL遇到特殊字符的问题。

<?php//导入CSV表格:CSV转数组
$fp=fopen($_FILES['myfile']['tmp_name'],'r');
while(($row=fgetcsv($fp))!==FALSE){//从文件指针中读入一行并解析CSV
$arr[]=$row;}fclose($fp);//开启事务,循环插入
$link=mysqli_connect("127.0.0.1","root","root","zwxiaomi");
if(!$link){echo"<script>alert('数据库连接失败!')</script>";}
$link->query("SETNAMESUTF8");
foreach($arras$row){

$danhao=substr($row[2],1);


$sql="INSERTINTOzaitugongdan(FirstName,LastName,danhao)
VALUES('".$row[0]."','".$row[1]."','".$danhao."')";
$link->query($sql);
}
?>

在代码中去掉这个符号不就可以了

6. php解析csv时,特定汉字会导致逗号识别不出来

这个需要看下你具体实现的代码,因为特殊汉字导致分隔符“,”失效这种情况应该是没有的。

文档里面这个函数的用法是:

fgetcsv($handle,1000,",")

第一个参数是文件句柄,第二个参数是要截取的长度,第三个是分隔符。

你试一下把第二个参数的数字调大一些,看下是否还有问题。

7. 这个php代码读出来的csv文件,在网页上显示乱码!请高手指教啊

你的csv文件猜测是gbk的,在php输出时候,加输出<meta http-equiv="Content-Type" content="text/html; charset=GB2312"/>试试

8. PHP的fgetcsv读不了中文啊,网上查的iconv,setlocale都不管用

mb_convert_encoding

参数自己查手册 一定能转的
ps:乱码产生无非是字的编码跟采用的解码不统一引起

9. PHP里fgetcsv这个函数读出来是一个二维数组

//从手册里摘出来的.
while ($data = fgetcsv($handle, 1000, ",")) {
$num = count($data);

//行中某个字段是对象外的也不需要,看不懂这句.但我想既然是csv,那结构肯定是一定的.假定要判断第三个字段是否是对象外的.
if($data[2] == '对象外') continue;//我不知道你说的对象外怎么判断.你改成自己的判断条件.如果,则跳过.
$row++;
$info_list[] = $data;

}
=============
最后的数组包含了第一行.你可以直接unset($info_list[0]);然后
$info_list = array_values($info_list);重置一下数组下标.

10. php把excel导入到mysql中乱码

只要保持编码一致
就不会出现乱码。
excel导入到mysql过程:
excel编码-->程序编码-->数据库编码
具体的你可以参阅PHP相关手册或工具书中
编码-字符集
相关章节,进行正确的编码转换
即可
程序编码-->数据库编码
过程中
具体的方法一般在
连接数据库后执行SQL语句:
SET
NAMES
'utf8';

SET
NAMES
'gbk';
即可解决

阅读全文

与phpfgetcsv乱码相关的资料

热点内容
自己购买云主服务器推荐 浏览:419
个人所得税java 浏览:760
多余的服务器滑道还有什么用 浏览:189
pdf劈开合并 浏览:26
不能修改的pdf 浏览:750
同城公众源码 浏览:488
一个服务器2个端口怎么映射 浏览:297
java字符串ascii码 浏览:78
台湾云服务器怎么租服务器 浏览:475
旅游手机网站源码 浏览:332
android关联表 浏览:945
安卓导航无声音怎么维修 浏览:332
app怎么装视频 浏览:430
安卓系统下的软件怎么移到桌面 浏览:96
windows拷贝到linux 浏览:772
mdr软件解压和别人不一样 浏览:904
单片机串行通信有什么好处 浏览:340
游戏开发程序员书籍 浏览:860
pdf中图片修改 浏览:288
汇编编译后 浏览:491