這篇文章主要介紹php如何導(dǎo)出csv設(shè)置編碼,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、景東網(wǎng)站維護(hù)、網(wǎng)站推廣。
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對(duì)導(dǎo)出超出1萬條數(shù)據(jù)會(huì)導(dǎo)至超時(shí)和內(nèi)存暴漲,后來我們就改用數(shù)據(jù)導(dǎo)出成csv格式的。
相信很多朋友們?cè)谟肞HP導(dǎo)出csv文件時(shí)都遇到各種亂碼問題。網(wǎng)上搜了一堆都是用加BOM的方式來解決,這個(gè)方法我試了好多次在我們的測(cè)試和生產(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的,對(duì)于某些中文字轉(zhuǎn)不了,轉(zhuǎn)不了還不能跳過然后返回空值,是這個(gè)原因?qū)е律倭藥资畻l數(shù)據(jù),同時(shí)給出了用mb_convert_encoding 這個(gè)方法來轉(zhuǎn)換。于是稍作修改就改成了用mb_convert_encoding方法了,在本地機(jī)測(cè)試非常正常,代碼如下:
$str = mb_convert_encoding($str,'gb2312');
但發(fā)布到線上導(dǎo)出數(shù)據(jù)還是一堆亂碼,但與之前不作轉(zhuǎn)碼時(shí)的亂碼還不一樣,說明mb_convert_encoding方法是起作用的。查了一下mb_convert_encoding方法有三個(gè)參數(shù)$from_encoding,第三個(gè)參數(shù)是可選參數(shù),網(wǎng)上大多數(shù)的示例都是不使用第三個(gè)參數(shù)的,第三個(gè)參數(shù)默認(rèn)也是null值。于是我把它用起來改成
$str = mb_convert_encoding($str,'gb2312','utf-8');
在本地開發(fā)機(jī)上測(cè)試是正常的,發(fā)布到生產(chǎn)環(huán)境,吼吼,一切正常了。
以上是“php如何導(dǎo)出csv設(shè)置編碼”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!