您好,登錄后才能下訂單哦!
這篇文章主要介紹了php生成csv亂碼的解決方法,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
php生成csv亂碼是因為輸出的csv格式文件沒有BOM,其解決辦法就是使用BOM標示字符編碼,代碼如“header("Content-type:text/csv;charset=gb2312");”。
本文操作環境:windows7系統、PHP7.1版,DELL G3電腦
解決PHP 輸出csv文件中文亂碼
PHP 下載文件常采用字節流輸出的方式。因此常用的下載csv格式代碼如下:
header("Content-Type: application/force-download"); header("Content-type:text/csv;charset=gb2312"); header("Content-Disposition:filename=打開郵件導出".date("YmdHis").".csv"); echo "收件人郵箱,收件人姓名,發送時間\r"; ob_end_flush(); foreach($list as $rs) { echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r"; flush(); } exit;
這樣下載的csv文件使用記事本或者sublime text等編輯器打開是正常的,但是使用excel打開就會亂碼,原因是輸出的csv格式文件沒有BOM,BOM的說法很多,正常情況下,在PHP中是需要去除BOM的,不過csv文件需要使用BOM標示字符編碼。
解決方式如下:
header("Content-Type: application/force-download"); header("Content-type:text/csv;charset=gb2312"); header("Content-Disposition:filename=打開郵件導出".date("YmdHis").".csv"); echo chr(0xEF).chr(0xBB).chr(0xBF); echo "收件人郵箱,收件人姓名,發送時間\r"; ob_end_flush(); foreach($list as $rs) { echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r"; flush(); } exit;
由于Linux的換行符與window的差別。如果上述代碼在Linux服務器中有不好的反應,可將 "\r" 改為 "\r\n"。
php,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似于C語言,現在被很多的網站編程人員廣泛的運用。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“php生成csv亂碼的解決方法”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。