fgetcsv函式的「陷阱」
今天遇到乙個奇怪的問題,前幾天寫的乙個php解析csv檔案格式的**,在本地執行正常,到了測試站上,就感覺像洩了氣的球一樣,不頂用了,而且只要是中文輸入,總是不能正確讀取,開始的時候懷疑是版本問題,因為本地裝的是5.3的最新版,所以總是有所懷疑,可是看了手冊,卻推翻了我的這個問題。正糾結著,而且如果說無論輸入什麼都不能解析麼,那也就罷了,奇就奇在,我第一行的中文他解析沒有問題,第二行開始
的所有中文,他都解析不了,讀取出來的都是空字串。也排除了我懷疑的編碼問題。
後來在手冊中找到如下一句話
2:
3: locale setting is taken into account by this function. if lang is e.g. en_us.utf-8, files in one-byte encoding are read wrong by this function.然後google了下fgetcsv,才發現,原來確實是這樣,fgetcsv函式對區域的設定是敏感的,對於單位元組編碼的檔案讀取時會出現錯誤。
在網上也看到類是可行的解決方案:在執行之前先設定setlocale();地區資訊。不過沒驗證該方法的可行度。
最後是用fget來代替該方法。
technorati 標籤:
php,
fgetvsc,
中文讀取不倒
2011-05-16 17:00
肖蝦公尺 閱讀(
...)
編輯收藏
php中fgetcsv 函式用法例項
bfcneefgetcsv是乙個簡單的生成excel文www.cppcns.com檔的函式從 php 4.3.5 起,bfcneefgetcsv 的操作是二進位制安全的,例項 如下 複製 如下 file fopen contacts.csv r print r fgetcsv file fclose...
fgetcsv讀取中文的問題
在使用fgetcsv讀取檔案內容,但是中文部分總是無法顯示,如果一段文字中夾雜著字母和中文,則字母前的中文無法讀取,但字母後的中文卻能夠保留。第一種解決辦法 上php官網翻了一下,原來加上setlocale即可解決。原本用php4沒出現這問題,大概是php5才會這樣吧.注釋 setlocale 函式...
C STL VC fread函式的陷阱
如果想實現從某個檔案中一次次n個位元組般讀出來,那建議不要用 read fread buff,n,1,data file 因為就算當檔案的位元組數比n大,但這時strlen buff 絕不是n個位元組大小!也不是read個位元組大小!查幫助文件,可知,read是指成功讀入的單元塊數,這裡對應的就是,...