導出後的效果php
先給各位看一下導出的效果,然後再進行代碼分析前端
徹底都是按照數據庫排列的~很是ok!~
下面咱們進行代碼分解mysql
實戰代碼sql
導出CSV處理流程:數據庫
讀取學生信息表微信
循環記錄構建逗號分隔的字段信息函數
設置header信息post
導出文件(下載)到本地fetch
博主從來都是抱着開源精神,那麼就直接貼代碼,廢話很少說了!ui
<?php require 'data/config.php';//豬都知道是引入數據庫 $result = mysql_query("select * from member order by id asc"); //查詢你須要導出的數據 $str = "uuid,nickname,ads,sex,phone,pic,balance,time,password,address,info,card,card_time,cid\n"; //這裏呢就是導出的csv文件的表頭 切記最後的換行符別落下 $str = iconv('utf-8','GB18030',$str); //利用iconv()函數轉換一下字符編碼。關於編碼問題,我在文章最後給你們詳細介紹 while($row=mysql_fetch_array($result)) //遍歷數據 { $nickname = iconv('utf-8','GB18030',$row['nickname']); //中文轉碼 由於博主導出的是微信用戶表,各類奇葩的暱稱都有,因此須要轉碼 $address = iconv('utf-8','GB18030',$row['address']); //中文轉碼 $info = iconv('utf-8','GB18030',$row['info']); //中文轉碼 $str .= $row['uuid'].",".$nickname.",".$row['ads'].",".$row['sex'].",".$row['phone'].",".$row['pic'].",".$row['balance'].",".$row['time'].",".$row['password'].",".$address.",".$info.",".$row['card'].",".$row['card_time'].",".$row['cid']."\n"; 導出的數據排列,對應表頭,切記最後的換行符別落下 } $filename = 'member.csv'; //設置文件名 //不要直接用date()函數。不然會報錯的; export_csv($filename,$str); //執行導出 //這個函數是設置header信息。照抄便可無需修改! function export_csv($filename,$data) { header("Content-type:text/csv"); header("Content-Disposition:attachment;filename=".$filename); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0'); header('Pragma:public'); echo $data; } ?>
關於字符編碼的解釋(認真看喲)
博主最開始導出的文件的時候轉換成gb2312編碼,結果某些中文符號亂碼
結果博主不甘心,又度娘了一下,網友說,GBK編碼更全更強大,好的,再一次失敗,都一個鳥樣!
而後博主鬱悶了,就問了對面的前端小夥,問他那個字符集編碼最全,無奈的是他告訴我是unicode(UTF-8)
固然我也知道unicode固然全。但是遇到中文就變孫子了,不行你試試
後來又繼續百度了一下中文編碼的知識,瞭解到最強的應該是GB18030。下給你們一些信息參考
國家標準GB18030-2005《信息技術 中文編碼字符集》是我國繼GB2312-1980和GB13000.1-1993以後最重要的漢字編碼標準,是我國計算機系統必須遵循的基礎性標準之一。 GB18030有兩個版本:GB18030-2000和GB18030-2005。GB18030-2000是GBK的取代版本,它的主要特色是在GBK基礎上增長了CJK統一漢字擴充A的漢字。GB18030-2005的主要特色是在GB18030-2000基礎上增長了CJK統一漢字擴充B的漢字。 下面這段摘抄自知乎 做者:Tuxify
連接:https://www.zhihu.com/questio...
來源:知乎
著做權歸做者全部,轉載請聯繫做者得到受權。
1 GB2312-80
GB 2312 或 GB 2312-80 是中國國家標準簡體中文字符集,全稱《信息交換用漢字編碼字符集·基本集》,又稱 GB 0,由中國國家標準總局發佈,1981 年 5 月 1 日實施。GB 2312 編碼通行於中國大陸;新加坡等地也採用此編碼。中國大陸幾乎全部的中文系統和國際化的軟件都支持 GB 2312。
GB 2312 標準共收錄 6763 個漢字,其中一級漢字 3755 個,二級漢字 3008 個;同時收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西裏爾字母在內的 682 個字符。
GB 2312 的出現,基本知足了漢字的計算機處理須要,它所收錄的漢字已經覆蓋中國大陸99.75% 的使用頻率。
對於人名、古漢語等方面出現的罕用字,GB 2312 不能處理,這致使了後來 GBK 及 GB 18030 漢字字符集的出現。
GB 2312 對任意一個圖形字符都採用兩個字節表示,並對所收漢字進行了「分區」處理,每區含有 94 個漢字/符號,分別對應第一字節和第二字節。這種表示方式也稱爲區位碼。
01-09 區爲特殊符號。
16-55 區爲一級漢字,按拼音排序。
56-87 區爲二級漢字,按部首/筆畫排序。
10-15 區及 88-94 區則未有編碼。
GB 2312 的編碼範圍爲 2121H-777EH,與 ASCII 有重疊,通行方法是將 GB 碼兩個字節的最高位置 1 以示區別。
2 GBK
GBK 即漢字內碼擴展規範,K 爲漢語拼音 Kuo Zhan(擴展)中「擴」字的聲母。英文全稱 Chinese Internal Code Specification。
GBK 共收入 21886 個漢字和圖形符號,包括:
GB 2312 中的所有漢字、非漢字符號。
BIG5 中的所有漢字。
與 ISO 10646 相應的國家標準 GB 13000 中的其它 CJK 漢字,以上合計 20902 個漢字。
其它漢字、部首、符號,共計 984 個。
GBK 向下與 GB 2312 徹底兼容,向上支持 ISO 10646 國際標準,在前者向後者過渡過程當中起到的承上啓下的做用。
GBK 採用雙字節表示,整體編碼範圍爲 8140-FEFE 之間,首字節在 81-FE 之間,尾字節在 40-FE 之間,剔除 XX7F 一條線。GBK 編碼區分三部分:
漢字區 包括
GBK/2:OXBOA1-F7FE, 收錄 GB 2312 漢字 6763 個,按原序排列;
GBK/3:OX8140-AOFE,收錄 CJK 漢字 6080 個;
GBK/4:OXAA40-FEAO,收錄 CJK 漢字和增補的漢字 8160 個。
圖形符號區 包括
GBK/1:OXA1A1-A9FE,除 GB 2312 的符號外,還增補了其它符號
GBK/5:OXA840-A9AO,擴除非漢字區。
用戶自定義區
GBK 區域中的空白區,用戶能夠本身定義字符。
3 GB18030
GB 18030,全稱:國家標準 GB 18030-2005《信息技術中文編碼字符集》,是中華人民共和國現時最新的內碼字集,是 GB 18030-2000《信息技術信息交換用漢字編碼字符集基本集的擴充》的修訂版。
GB 18030 與 GB 2312-1980 和 GBK 兼容,共收錄漢字70244個。
與 UTF-8 相同,採用多字節編碼,每一個字能夠由 1 個、2 個或 4 個字節組成。
編碼空間龐大,最多可定義 161 萬個字符。
支持中國國內少數民族的文字,不須要動用造字區。
漢字收錄範圍包含繁體漢字以及日韓漢字
GB 18030 編碼是一二四字節變長編碼。
單字節,其值從 0 到 0x7F,與 ASCII 編碼兼容。
雙字節,第一個字節的值從 0x81 到 0xFE,第二個字節的值從 0x40 到 0xFE(不包括0x7F),與 GBK 標準兼容。
四字節,第一個字節的值從 0x81 到 0xFE,第二個字節的值從 0x30 到 0x39,第三個字節從0x81 到 0xFE,第四個字節從 0x30 到 0x39。
ok bye see you!等上傳CSV寫出來後我會放給你們!