您好,登錄后才能下訂單哦!
這篇文章主要介紹php如何導出csv設置編碼,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
php導出csv設置編碼的方法:1、使用iconv方法將導出的內容轉碼由utf-8轉為gb2312;2、使用mb_convert_encoding方法轉換編碼。
本文操作環境:Windows7系統、PHP7.1版,Dell G3電腦
我們之前都是使用PHPexcel導出我們的一些數據的,由于Phpexcel對導出超出1萬條數據會導至超時和內存暴漲,后來我們就改用數據導出成csv格式的。
相信很多朋友們在用PHP導出csv文件時都遇到各種亂碼問題。網上搜了一堆都是用加BOM的方式來解決,這個方法我試了好多次在我們的測試和生產環境下都不管用,不知道是為什么。
后來使用iconv方法將導出的內容轉碼由utf-8轉為gb2312,奇跡終于出來了,可以正常顯示了,不過經同事發現,我們導出400多條數據里竟然少了幾十條數據(我是一條一條轉碼然后拼接出出的csv字符串)。于是到度娘上找iconv轉碼失敗的問題,發現iconv原來是有BUG的,對于某些中文字轉不了,轉不了還不能跳過然后返回空值,是這個原因導致少了幾十條數據,同時給出了用mb_convert_encoding 這個方法來轉換。于是稍作修改就改成了用mb_convert_encoding方法了,在本地機測試非常正常,代碼如下:
$str = mb_convert_encoding($str,'gb2312');
但發布到線上導出數據還是一堆亂碼,但與之前不作轉碼時的亂碼還不一樣,說明mb_convert_encoding方法是起作用的。查了一下mb_convert_encoding方法有三個參數$from_encoding,第三個參數是可選參數,網上大多數的示例都是不使用第三個參數的,第三個參數默認也是null值。于是我把它用起來改成
$str = mb_convert_encoding($str,'gb2312','utf-8');
在本地開發機上測試是正常的,發布到生產環境,吼吼,一切正常了。
以上是“php如何導出csv設置編碼”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。