看板 PHP 關於我們 聯絡資訊
小弟目前遇到一個CSV檔案是用Tab分隔的,而該檔案儲存編碼又是big5 且檔案檔案每一行內容長度較長 檔案長的像這樣:(這是Fax server的LOG,小弟想把他以網頁顯示) "Status" "ErrorDesc" "ErrorCode" "StartTime" "EndTime" "Device" "QueueFileName" "FileSize" "CSID" "TSID" "CallerID" "RoutingInfo" "Pages" "接收錯誤" "傳入的呼叫不能接聽成傳真" "0x40000801" 3/16/2011 11:19:22 3/16/2011 11:20:20 "ESS ES56H-PI型資料傳真語音數據機" "C:\Documents and Settings\All Users\Application Data\Microsoft\Windows NT\MSFax\Queue\1CBE388F23332.tif" 0 "Fax" " " "" " " 0 (應該超過ptt可以正常顯示版面了) 小弟的code... <? $handle = fopen('檔案絕對路徑','rb'); if ($handle){ while (!feof($handle)) { $buffer = fgets($handle, 4096); print "<p>".$buffer; } fclose($handle); } ?> 這樣子寫 是能斷行(雖然很不漂亮XD) 但是會有亂碼問題 <p>拿掉就不會斷行了 檔案會連續的一直接著...Orz 原本想說是不是先把Tab分隔轉成,分隔的形式比較好處理,結果又中文亂碼 (檔案是big5...) 還請知道的大大若方便請指導小弟作法 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.127.178.149 ※ 編輯: redhat1980 來自: 122.127.178.149 (03/29 02:39)
akasan:對 big5 有意見要轉 utf-8 用個 iconv 不就好了 03/29 02:41
akasan:兩光一點用 explode 就可以解了 03/29 02:42
Huangs:setlocale() 設定編碼為 big5,然後用 fgetcsv() 03/29 02:52
arrack:最好不要直接用ICONV轉全部 03/29 02:57
redhat1980:$contents = file('檔案路徑'); 03/29 03:01
redhat1980:$handle = fopen('寫入的檔案', 'w'); 03/29 03:01
redhat1980:foreach($contents as $line){ 03/29 03:02
redhat1980:setlocale(LC_ALL,"big5"); 03/29 03:02
redhat1980:fputcsv($handle, explode("\t", $line));} 03/29 03:02
redhat1980:fclose($handle); ?> 03/29 03:03
redhat1980:大大小弟這樣做不知對嗎XD 轉過還是亂碼耶Orz 03/29 03:03
redhat1980:上面是小弟把Tab轉csv 03/29 03:04
redhat1980:小弟眼殘 是fgetcsv 03/29 03:07