在處理大批量excel數(shù)據(jù)到mysql數(shù)據(jù)庫時(shí),用php自帶的fgetcsv函數(shù)先從csv文件中逐行獲取數(shù)據(jù),再配合sql語句導(dǎo)入數(shù)據(jù)庫,如果遇到了亂碼問題,可以使用iconv函數(shù)進(jìn)行轉(zhuǎn)碼,代碼示例如下:
- <?php
- $row = 1;
- $handle = fopen("test.csv","r");
- while ($data = fgetcsv($handle, 1000, ",")) {//1000為csv文件總行數(shù),逗號是數(shù)據(jù)分隔符,這兩個(gè)參數(shù)均可以忽略不寫
- $num = count($data);
- echo "<p> 第 $row行有$num個(gè)字段。 <br>n";
- $row++;
- for ($c=0; $c < $num; $c++) {
- echo $data[$c] . "<br>n";
- }
- }
- fclose($handle);
- ?>
導(dǎo)入mysql時(shí)中文亂碼
用網(wǎng)上通用的方法讀取并上傳csv文件內(nèi)容進(jìn)入mysql數(shù)據(jù)庫中時(shí),中文顯示亂碼,即使對數(shù)據(jù)用iconv函數(shù)轉(zhuǎn)碼后仍然亂碼,這時(shí)可以用setlocale()函數(shù),這個(gè)函數(shù)經(jīng)查閱是配置地域信息用的,在讀取和寫入csv數(shù)據(jù)前先用此函數(shù)進(jìn)行定義,比如我的csv文件是無BOM的UTF-8格式,就先用如下函數(shù)進(jìn)行定義:
setlocale(LC_ALL, 'zh_CN.UTF8′);然后再用iconv函數(shù)對數(shù)據(jù)內(nèi)容進(jìn)行轉(zhuǎn)碼入庫等后續(xù)操作。
新聞熱點(diǎn)
疑難解答