導航:首頁 > 編程語言 > 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 瀏覽:759
多餘的伺服器滑道還有什麼用 瀏覽: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