歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> fgetcsv之在Ubuntu 10.10下不能解析中文的問題

fgetcsv之在Ubuntu 10.10下不能解析中文的問題

日期:2017/2/28 16:09:22   编辑:Linux教程

這篇(http://www.linuxidc.com/Linux/2011-08/40394p2.htm)敘述了用fgets的方法來代替fgetcsv讀取csv文件,後來發現,如果不使經過處理而直接代替,還是有問題:著實讓我郁悶了很久啊。

首先,fgetcsv在處理的時候,會正確的處理一行中的內容,就算我行中含有換行符和,,都可以處理掉,正確的解析出來。而如果用fgets,那麼這些都需要自己做,當然網上也給出了一個重寫fgetcsv的方法,當然用的使正則,這個效率上需要斟酌啊。

但是fgetcsv卻有個問題,就如我上一篇中提到的,地區的設置,當然setlocale(LC_ALL, 'zh_CN');事實證明是可以解決的,但是這個是在我WIN下測試的情況下。當我轉移到Ubuntu來測試的時候,悲劇發生了。

雖然我的ubuntu系統使中文的系統,可是用的local是zh_CN.UTF8的,並沒有zh_CN.GBK的,於是乎,中文字不能解析的情景再次上演了。

當然前輩的肩膀總是偉大的,在互聯網的推動下,一切都有辦法解決。

我先是更新了下語言包,系統->管理->語言支持。第一次打開的時候提示我沒有安裝完全,需要升級,於是我升級了,可是在命令行中查看locale -a的時候,仍然沒有zh_CN:

www.linuxidc.com@ubuntu:/usr/www/GBKHost/test$ locale -a
C
POSIX
zh_CN.utf8
zh_HK.utf8
zh_SG.utf8
zh_TW.utf8

於是我這樣做:

1、修改local文件,添加zh_CN支持:

sudo vi /var/lib/locales/supported.d/local

在第一行前插入一行zh_CN 為了萬一,我也插入了zh_CN.GBK GBK這行

保存。

2、設置支持包

sudo locale-gen zh_CN

sudo locale-gen zh_CN.GBK

3、 再次運行locale -a

www.linuxidc.com@ubuntu:/usr/www/GBKHost/test$ locale -a

C

POSIX

zh_CN

zh_CN.gb2312

zh_CN.gbk

zh_CN.utf8

zh_HK.utf8

zh_SG.utf8

zh_TW.utf8

終於有了。

再次去運行下csv導入頁面(當然含有setlocale(LC_CTYPE, 'zh_CN')操作了),成功!

Copyright © Linux教程網 All Rights Reserved