Linux fgetcsv取得的數(shù)組元素為空字符串的解決方法
更新時間:2011年11月25日 00:41:59 作者:
使用CSV導(dǎo)入數(shù)據(jù)的時候,我們通常用的是Windows系統(tǒng),使用GBK在Windows的Excel中編輯
但服務(wù)器上,很多使用Linux服務(wù)器,源程序使用UTF-8,這樣很容易產(chǎn)生字符編碼的問題.
如果僅僅將CSV文件轉(zhuǎn)碼為UTF-8,這樣在Windows服務(wù)器上沒有問題,
而在RedHat5.5上,用fgetcsv取得的數(shù)組中,如果某列的內(nèi)容是中文,則該列對應(yīng)的數(shù)組元素為空字符串,而英文則正常.
這時,需要設(shè)置區(qū)域:
setlocale(LC_ALL, 'zh_CN.UTF-8');
代碼如下
// 上傳的CSV文件,通常是用Excel編輯的GBK編碼,
// 而源代碼是UTF-8,需要進(jìn)行轉(zhuǎn)碼處理
file_put_contents($new_file, iconv('GBK', 'UTF-8', file_get_contents($new_file)));
//ini_set('auto_detect_line_endings', true);
// 設(shè)置區(qū)域:簡體中文,UTF-8編碼
setlocale(LC_ALL, 'zh_CN.UTF-8');
// 打開CSV文件
$handle = fopen($new_file, 'r');
// 取出列頭
$data_heads = fgetcsv($handle);
如果僅僅將CSV文件轉(zhuǎn)碼為UTF-8,這樣在Windows服務(wù)器上沒有問題,
而在RedHat5.5上,用fgetcsv取得的數(shù)組中,如果某列的內(nèi)容是中文,則該列對應(yīng)的數(shù)組元素為空字符串,而英文則正常.
這時,需要設(shè)置區(qū)域:
setlocale(LC_ALL, 'zh_CN.UTF-8');
代碼如下
復(fù)制代碼 代碼如下:
// 上傳的CSV文件,通常是用Excel編輯的GBK編碼,
// 而源代碼是UTF-8,需要進(jìn)行轉(zhuǎn)碼處理
file_put_contents($new_file, iconv('GBK', 'UTF-8', file_get_contents($new_file)));
//ini_set('auto_detect_line_endings', true);
// 設(shè)置區(qū)域:簡體中文,UTF-8編碼
setlocale(LC_ALL, 'zh_CN.UTF-8');
// 打開CSV文件
$handle = fopen($new_file, 'r');
// 取出列頭
$data_heads = fgetcsv($handle);
相關(guān)文章
PHP+jQuery實(shí)現(xiàn)自動補(bǔ)全功能源碼
前面手工寫了一個下拉自動補(bǔ)全功能,寫的簡單,只實(shí)現(xiàn)了鼠標(biāo)選擇的功能,不支持鍵盤選擇,下面與大家分享下PHP+jQuery實(shí)現(xiàn)自動補(bǔ)全功能2013-05-05
PHP簡單實(shí)現(xiàn)文本計(jì)數(shù)器的方法
這篇文章主要介紹了PHP簡單實(shí)現(xiàn)文本計(jì)數(shù)器的方法,涉及PHP針對文本文件的簡單判斷,讀取及寫入等操作技巧,需要的朋友可以參考下2016-04-04
php設(shè)計(jì)模式 Visitor 訪問者模式
表示一個作用于某對象結(jié)構(gòu)中的各元素的操作,可以在不改變各元素的類的前提下定義作用于這些元素的新操作2011-06-06
PHP學(xué)習(xí)之?dāng)?shù)組值的操作
PHP中,用list來析取數(shù)組中的值,如list($a, $b) = $array。2011-04-04

