溫馨提示×

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

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

php fgetcsv亂碼怎么辦

發(fā)布時(shí)間:2020-07-27 14:04:42 來(lái)源:億速云 閱讀:489 作者:Leah 欄目:編程語(yǔ)言

php fgetcsv亂碼怎么辦?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

php fgetcsv亂碼是因?yàn)閷?dǎo)入的csv文件是以ansi編碼保存的,其解決辦法就是將中文操作系統(tǒng)環(huán)境對(duì)應(yīng)的編設(shè)置為“gbk”,也就是通過(guò)手動(dòng)更改瀏覽器字符編碼為“gbk”即可。

php使用fgetcsv讀取csv文件出現(xiàn)亂碼的解決方法

一般來(lái)說(shuō)在php中碰到亂碼多半是編碼問(wèn)題,在這里我們實(shí)例分析了fgetcsv讀取csv文件亂碼原因所在與解決方法。

例子如下:

代碼如下:

function get_csv_contents( $file_target ){
 $handle  = fopen( $file_target, 'r');
 while ($data = fgetcsv($handle, 1000, ",")) {
 
  $num = count($data);
  echo "<p> $num fields in line $row: <br>n";
  $row++;
  for ($c=0; $c < $num; $c++) {
   echo $data[$c]. "<br>n";;
   /*echo getUTFString($data[$c])*/
  }
 }
 fclose($handle);
}

導(dǎo)入的csv文件是以ansi編碼保存的,對(duì)于中文操作系統(tǒng)環(huán)境對(duì)應(yīng)的應(yīng)該就是gbk編碼了,通過(guò)手動(dòng)更改瀏覽器字符編碼為gbk,亂碼的情況消失了,于時(shí)進(jìn)行了下面調(diào)整。

代碼如下:

$data = eval('return '.iconv('gbk','utf-8',var_export($data,true)).';');

$data為需要轉(zhuǎn)換編碼的數(shù)組。

補(bǔ)充:LINUX FGETCSV讀取GBK數(shù)據(jù)亂碼

當(dāng)Linux系統(tǒng)是使用的默認(rèn)設(shè)置,則在該Linux服務(wù)器上對(duì)gbk的csv格式文件進(jìn)行處理的時(shí)候,就會(huì)出現(xiàn)亂碼現(xiàn)象。

解決方法是:

使用 setlocale 函數(shù)設(shè)置環(huán)境變量。比如要設(shè)置使用gb 的區(qū)域設(shè)置可以在fgetcsv前使用下面的語(yǔ)句。

代碼如下:

setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030'));

具體使用哪些locale 可以使用linux 命令 locale -a 查看系統(tǒng)支持哪些

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

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

AI