首頁 > 後端開發 > PHP問題 > php 導入csv亂碼問題怎麼辦

php 導入csv亂碼問題怎麼辦

藏色散人
發布: 2023-03-17 14:10:01
原創
2060 人瀏覽過

php導入csv亂碼問題的解決方法:1、建構一個解析函數「function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {...}」;2 、讀取檔案到變數;3、透過「substr($s,2)」去掉BOM頭即可。

php 導入csv亂碼問題怎麼辦

本教學操作環境:Windows7系統、PHP8.1版、Dell G3電腦。

php 導入csv亂碼問題怎麼辦?

解決php導入淘寶助理csv文件亂碼問題及解析

用php導入csv檔案很多時候會出現中文亂碼的狀況,特別是導入淘寶助理資料包,在網路上查了很多轉碼方法,都無法解決問題,這是什麼原因呢?

首先,淘寶助理導出的csv檔案為UTF-16LE編碼,很少見是吧。

#其次,它的csv檔案並非逗號分隔,而是\t分割。

透過如下程式碼,即可實作csv檔案解析功能

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

* 构造一个解析函数

* (php内置的str_getcsv不知为何会出现局部乱码,原因不详)

*/

function tb_str_getcsv($string, $delimiter=',', $enclosure='"') {

$fp = fopen('php://temp/', 'r+');

fputs($fp, $string);

rewind($fp);

while($t = fgetcsv($fp, strlen($string), $delimiter, $enclosure)) {

$r[] = $t;

}

if(count($r) ==1) return current($r);

return $r;

}

$s = file_get_contents($path); //读取文件到变量

$s = iconv('UTF-16LE', 'utf-8', substr($s,2));//转码,substr($s,2)的作用是去掉 BOM 头 FFFE

//有的第三方数据包很不规范,控制符没有用空双引号

//可能导致列数不对应,在此加上空双引号

$s = str_replace("\t\t", "\t\"\"\t", $s);

$s = str_replace("\t\t", "\t\"\"\t", $s);

$csv_data = tb_str_getcsv($s, "\t");//读取到数组

登入後複製

推薦學習:《PHP影片教學

以上是php 導入csv亂碼問題怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
用php合併格式一樣的csv
來自於 1970-01-01 08:00:00
0
0
0
java 透過header導出csv檔亂碼
來自於 1970-01-01 08:00:00
0
0
0
python對8000行csv新增列
來自於 1970-01-01 08:00:00
0
0
0
如何將 CSV 檔案匯入 MySQL 表?
來自於 1970-01-01 08:00:00
0
0
0
反轉PHP讀取CSV文件
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板