溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php如何導(dǎo)出csv設(shè)置編碼

發(fā)布時間:2021-09-17 10:40:42 來源:億速云 閱讀:156 作者:小新 欄目:編程語言

這篇文章主要介紹php如何導(dǎo)出csv設(shè)置編碼,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

php導(dǎo)出csv設(shè)置編碼的方法:1、使用iconv方法將導(dǎo)出的內(nèi)容轉(zhuǎn)碼由utf-8轉(zhuǎn)為gb2312;2、使用mb_convert_encoding方法轉(zhuǎn)換編碼。

本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版,Dell G3電腦

  我們之前都是使用PHPexcel導(dǎo)出我們的一些數(shù)據(jù)的,由于Phpexcel對導(dǎo)出超出1萬條數(shù)據(jù)會導(dǎo)至超時和內(nèi)存暴漲,后來我們就改用數(shù)據(jù)導(dǎo)出成csv格式的。

相信很多朋友們在用PHP導(dǎo)出csv文件時都遇到各種亂碼問題。網(wǎng)上搜了一堆都是用加BOM的方式來解決,這個方法我試了好多次在我們的測試和生產(chǎn)環(huán)境下都不管用,不知道是為什么。

  后來使用iconv方法將導(dǎo)出的內(nèi)容轉(zhuǎn)碼由utf-8轉(zhuǎn)為gb2312,奇跡終于出來了,可以正常顯示了,不過經(jīng)同事發(fā)現(xiàn),我們導(dǎo)出400多條數(shù)據(jù)里竟然少了幾十條數(shù)據(jù)(我是一條一條轉(zhuǎn)碼然后拼接出出的csv字符串)。于是到度娘上找iconv轉(zhuǎn)碼失敗的問題,發(fā)現(xiàn)iconv原來是有BUG的,對于某些中文字轉(zhuǎn)不了,轉(zhuǎn)不了還不能跳過然后返回空值,是這個原因?qū)е律倭藥资畻l數(shù)據(jù),同時給出了用mb_convert_encoding 這個方法來轉(zhuǎn)換。于是稍作修改就改成了用mb_convert_encoding方法了,在本地機測試非常正常,代碼如下:

$str = mb_convert_encoding($str,'gb2312');

但發(fā)布到線上導(dǎo)出數(shù)據(jù)還是一堆亂碼,但與之前不作轉(zhuǎn)碼時的亂碼還不一樣,說明mb_convert_encoding方法是起作用的。查了一下mb_convert_encoding方法有三個參數(shù)$from_encoding,第三個參數(shù)是可選參數(shù),網(wǎng)上大多數(shù)的示例都是不使用第三個參數(shù)的,第三個參數(shù)默認也是null值。于是我把它用起來改成

$str = mb_convert_encoding($str,'gb2312','utf-8');

在本地開發(fā)機上測試是正常的,發(fā)布到生產(chǎn)環(huán)境,吼吼,一切正常了。

以上是“php如何導(dǎo)出csv設(shè)置編碼”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI