本篇文章給大家分享的是有關(guān)怎么解決在php中讀取csv時(shí)中文亂碼的問(wèn)題,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到張家口網(wǎng)站設(shè)計(jì)與張家口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請(qǐng)域名、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋張家口地區(qū)。
php讀取csv時(shí)中文亂碼的解決辦法:首先在導(dǎo)入csv的php腳本文件頭部加上相應(yīng)代碼;然后使用【$row】進(jìn)行轉(zhuǎn)義,將中文編碼讀取出來(lái);最后使用一個(gè)【fgetcsv()】方法的替代函數(shù),防止php該函數(shù)自帶著一些bug即可。
php讀取csv時(shí)中文亂碼的解決辦法:
1、首先講linux,不管是centos或者Ubuntu。在導(dǎo)入csv的php腳本文件頭部加上如下代碼:
setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030'));
這段代碼的作用是改變腳本默認(rèn)編碼,因?yàn)椴僮飨到y(tǒng)的編碼格式不是GBK所以,讀取中文的時(shí)候會(huì)亂碼。
2、接著講windows,我們?cè)谧x取csv數(shù)據(jù)的時(shí)候,會(huì)有一個(gè)while循環(huán)遍歷每一行的數(shù)據(jù),而讀取的每一行數(shù)據(jù),就需要我們進(jìn)行轉(zhuǎn)義,將中文編碼讀取出來(lái)。代碼如下:
$row = eval('return '.iconv('gbk','utf-8',var_export($row,true)).';');
$row
,就是讀取出來(lái)每一行的數(shù)據(jù)變量。
3、最后,貼一個(gè)fgetcsv()
方法的替代函數(shù),這種是針對(duì)有些老版本的php該函數(shù)自帶著一些bug的情況。如果上邊兩點(diǎn)還是沒(méi)辦法解決您的問(wèn)題,您可以嘗試一下使用該函數(shù),與前邊兩點(diǎn)配合使用。
function fgetcsv_reg(& $handle, $length = null, $d = ',', $e = '"') { $d = preg_quote($d); $e = preg_quote($e); $_line = ""; $eof=false; while ($eof != true) { $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length)); $itemcnt = preg_match_all('/' . $e . '/', $_line, $dummy); if ($itemcnt % 2 == 0) $eof = true; } $_csv_line = preg_replace('/(?: |[ ])?$/', $d, trim($_line)); $_csv_pattern = '/(' . $e . '[^' . $e . ']*(?:' . $e . $e . '[^' . $e . ']*)*' . $e . '|[^' . $d . ']*)' . $d . '/'; preg_match_all($_csv_pattern, $_csv_line, $_csv_matches); $_csv_data = $_csv_matches[1]; for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) { $_csv_data[$_csv_i] = preg_replace('/^' . $e . '(.*)' . $e . '$/s', '$1', $_csv_data[$_csv_i]); $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]); } return empty ($_line) ? false : $_csv_data; }
以上就是怎么解決在php中讀取csv時(shí)中文亂碼的問(wèn)題,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
名稱(chēng)欄目:怎么解決在php中讀取csv時(shí)中文亂碼的問(wèn)題
URL鏈接:http://www.rwnh.cn/article48/gpodep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、建站公司、微信小程序、網(wǎng)站內(nèi)鏈、網(wǎng)站排名、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)