Re: [請益] 開啟csv讀取裡面的資料都會亂碼

看板PHP作者 (任性)時間16年前 (2009/06/19 13:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《sdallan ()》之銘言: : 小弟我嚐試著在讀取.csv檔案內的資料 : 在測試看看要印出來 : 發現都出現亂碼 : <meta http-equiv="content-type" content="text/html" charset="utf-8"> : 網頁本身有設定為 utf-8 : 用 $row[1] = iconv("big5","utf8",$row[1]); : 能請教是我哪邊沒用好嗎? 因為 php 的 fgetcsv 有問題(你 999% 沒有自己寫 parser 齁)。 你可以參考這個寫法。 <?php class CsvParser { var $headers = array(); var $fields = array(); var $numRecords = 0; function CsvParser($file, $readHeaders = true, $delim = ",") { if (file_exists($file)) { $fp = fopen($file, "r"); if (!$fp) { echo '囧,,你餵我什麼'; return; } if ($readHeaders === true) { $this->headers = $this->getcsv($fp, $delim); } while ($data = $this->getcsv($fp, $delim)) { $this->fields[] = $data; $this->numRecords++; } fclose($fp); } else { echo '檔案不在喔'; return; } } function getcsv($fp, $delim) { if ($fp = fgets($fp, 4096)) return explode($delim, $fp); else return false; } function getRecord($num) { if ($num >= 0 && $num < $this->numRecords) return $this->fields[$num]; else return array(); } }; ?> 上面是一個簡單的 Parser 下面是用法: $csv = new CsvParser ($_FILES['file']['tmp_name'], false, ','); for ($k = 0; $k < $csv->numRecords; $k++) { if($k > 0) { $ROW = $csv->getRecord($k); print_r($ROW); // $ROW[2] = iconv("big5","UTF-8",$ROW[2]); } } -- 任性是我僅有的溫柔.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.228.144.213
文章代碼(AID): #1AEnkLdJ (PHP)
文章代碼(AID): #1AEnkLdJ (PHP)