Linux fgetcsv取得的數(shù)組元素為空字符串的解決方法
更新時(shí)間:2011年11月25日 00:41:59 作者:
使用CSV導(dǎo)入數(shù)據(jù)的時(shí)候,我們通常用的是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í),需要設(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í),需要設(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正則表達(dá)式替換站點(diǎn)關(guān)鍵字鏈接后空白的解決方法
這篇文章主要介紹了PHP正則表達(dá)式替換站點(diǎn)關(guān)鍵字鏈接后空白的問題解決,需要的朋友可以參考下2014-09-09
PHP寫入WRITE編碼為UTF8的文件的實(shí)現(xiàn)代碼
可以把uft-8格式的文件,寫到文本中的實(shí)現(xiàn)代碼2008-07-07
php初學(xué)者寫及時(shí)補(bǔ)給skype用戶充話費(fèi)的小程序
前段時(shí)間有一個(gè)活動上線,存在一個(gè)有少量的skype用戶沒充上話費(fèi)的問題,今天去數(shù)據(jù)庫(mysql)查詢了一下,嚇我一跳,還真多.這樣讓我挨個(gè)挨個(gè)地充,肯定累死人不可2008-11-11
PHP實(shí)現(xiàn)獲取某個(gè)月份周次信息的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)獲取某個(gè)月份周次信息的方法,涉及php針對日期與時(shí)間的相關(guān)計(jì)算技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
php中靜態(tài)類與靜態(tài)變量用法的區(qū)別分析
這篇文章主要介紹了php中靜態(tài)類與靜態(tài)變量用法的區(qū)別,以實(shí)例形式較為詳細(xì)的分析了php中靜態(tài)類與靜態(tài)變量的定義、功能及使用技巧,需要的朋友可以參考下2015-01-01

