中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

解決utf8編碼中php導出CSV亂碼的方法

發布時間:2020-08-18 10:11:33 來源:億速云 閱讀:473 作者:小新 欄目:編程語言

小編給大家分享一下解決utf8編碼中php導出CSV亂碼的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

解決亂碼的方法:1、使用iconv函數將utf8編碼轉碼為GBK,語法“$str = iconv('utf-8', 'GBK//IGNORE', $str));”;2、在輸出內容前先輸出BOM頭,這樣Excel就可自動識別到是UTF-8了。

解決utf8編碼中php導出CSV亂碼的方法

其實需求是把數據導出到Excel,很當然的想到大名鼎鼎的PHPExcel這個庫。這個庫是很強大,就是比較占用內存,超過10萬的數據,在web請求中基本是很難完成了。因此,使用原生PHP導出輕量的csv還是有需求的。

一般情況下,導出UTF-8編碼的常規內容到csv當中,用Excel打開都是亂碼,更別說一些非主流字符,或者是emoji表情。亂碼,是因為在windows系統下,默認的Excel是使用GBK編碼解析的。現如今,編碼哪還有不是使用UTF-8的,真有,那也是大公司知名產品會為了省那點流量出有GBK等其他編碼的版本,一般情況下都是使用UTF-8的。

要解決亂碼問題,PHP中做法一般是使用iconv函數進行轉碼為GBK,這樣,默認的Excel打開就不會有問題了。但對于emoji表情等主流字符,GBK并不能顯示,轉碼失敗直接為空了。可以添加//IGNORE標記進行忽略,這樣只是忽略了它們,其他正常字符是能夠保留的。

$str = iconv('utf-8', 'GBK//IGNORE', $str));

這可以說是一種折中方案。能不能不轉碼直接輸出UTF-8?難道Excel還不能自動識別UTF-8進而使用UTF-8來解碼顯示么?其實是可以的,只是它需要一個BOM頭(在非windows的世界里是沒有這個東西的),有這個BOM頭它就能識別到是UTF-8,否則識別不了用默認的GBK來處理,自然就是亂碼了。如何正確輸出所謂的BOM頭,看代碼:

$fp = fopen('./test_csv.csv', 'a');
fwrite($fp,chr(0xEF).chr(0xBB).chr(0xBF));//輸出BOM頭
fputcsv($fp, ['標題']);
fputcsv($fp, ['解決亂碼']);
fclose($fp);

可以解決所謂亂碼以及正常顯示emoji表情等非主流字符。

看完了這篇文章,相信你對解決utf8編碼中php導出CSV亂碼的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

稷山县| 崇州市| 额济纳旗| 永丰县| 永州市| 青川县| 石渠县| 兴宁市| 嘉善县| 贵阳市| 黄浦区| 西青区| 稻城县| 二连浩特市| 普兰县| 开平市| 油尖旺区| 衡山县| 惠水县| 蚌埠市| 宁都县| 苍梧县| 清镇市| 镇安县| 时尚| 中超| 华亭县| 昌黎县| 靖边县| 疏勒县| 荔波县| 遂宁市| 大石桥市| 湾仔区| 淳化县| 济南市| 育儿| 嘉鱼县| 宁城县| 习水县| 克什克腾旗|