fgetcsv讀取不了中文解決辦法

來源:互聯網
上載者:User
fgetcsv讀取不了中文
已設定setlocale(LC_ALL, 'zh_CN'),但在讀取csv檔案的時候,有時不能讀取裡面的中文,這是為什嗎?跟系統系統好像有關係!

------解決方案--------------------
文檔編碼和系統編碼相同嗎,不相同的話iconv把文檔編碼轉成系統編碼。
------解決方案--------------------
fgetcsv有BUG。

用這個函數吧。


PHP code
function _fgetcsv(& $handle, $length = null, $d = ',', $e = '"') {     $d = preg_quote($d);     $e = preg_quote($e);     $_line = "";     $eof=false;     while ($eof != true) {         $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length));         $itemcnt = preg_match_all('/' . $e . '/', $_line, $dummy);         if ($itemcnt % 2 == 0)             $eof = true;     }     $_csv_line = preg_replace('/(?: |[ ])?$/', $d, trim($_line));     $_csv_pattern = '/(' . $e . '[^' . $e . ']*(?:' . $e . $e . '[^' . $e . ']*)*' . $e . '|[^' . $d . ']*)' . $d . '/';     preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);     $_csv_data = $_csv_matches[1];     for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) {         $_csv_data[$_csv_i] = preg_replace('/^' . $e . '(.*)' . $e . '$/s', '$1' , $_csv_data[$_csv_i]);         $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]);     }     return empty ($_line) ? false : $_csv_data;}
------解決方案--------------------
fgetcsv的bug就是讀取不了中文。。。
------解決方案--------------------
確實,感覺即使5.3了,對多位元組的支援還是不是很好
------解決方案--------------------
其實是 php5.3 出問題了
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.