fgetcsv讀取中文的問題

2022-09-17 23:24:18 字數 1202 閱讀 3103

在使用fgetcsv讀取檔案內容,但是中文部分總是無法顯示,如果一段文字中夾雜著字母和中文,則字母前的中文無法讀取,但字母後的中文卻能夠保留。

第一種解決辦法:

上php官網翻了一下,原來加上setlocale即可解決。

原本用php4沒出現這問題,大概是php5才會這樣吧...

注釋:setlocale() 函式僅針對當前指令碼改變地區資訊。

// utf-8

setlocale

(lc_all, 'en_us.utf-8');

// 簡體

setlocale

(lc_all, 'zh_cn');

//設定回系統預設

setlocale

(lc_all,null);

以下是常用的地區標識

zh_cn gb2312

en_us.utf-8 utf-8

zh_tw big5

zh_hk big5-hkscs

zh_tw.euc-tw euc-tw

zh_tw.utf-8 utf-8

zh_hk.utf-8 utf-8

zh_cn.gbk gbk

第二種解決辦法:(替代函式, 執行效率低)

php自帶的fgetcsv函式對中文支援總出問題,處理中文文件時,經常出現中文字串丟字或亂碼的情況。但找了個替代函式:

function fgetcsv_reg(& $handle, $length = null, $d = ',', $e = '"')

$_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++)

return empty ($_line) ? false : $_csv_data;

}

fgetcsv函式的「陷阱」

fgetcsv函式的 陷阱 今天遇到乙個奇怪的問題,前幾天寫的乙個php解析csv檔案格式的 在本地執行正常,到了測試站上,就感覺像洩了氣的球一樣,不頂用了,而且只要是中文輸入,總是不能正確讀取,開始的時候懷疑是版本問題,因為本地裝的是5.3的最新版,所以總是有所懷疑,可是看了手冊,卻推翻了我的這個...

c 讀取mysql的中文亂碼問題

1 選用gb2312編碼 2 設定my.ini檔案中的預設編碼 分別在 mysql 和 mysqld 配置段中增加或修改default charater set gb2312 3 建立資料庫時編碼選用gb2312 4 建立表時編碼選用gb2312,collation選用gb2312 chines c...

linux中讀取文字的中文亂碼問題

一 單一檔案設定 1.開啟終端,進入到檔案所在目錄.2.使用命令符 iconv f gb18030 t utf8 a.hpp o b.hpp把gb18030編碼的a.hpp轉換成utf8的b.hpp。這樣b.hpp就成為linux支援的編碼。設定完畢。二 整體設定 1.開啟終端,執行如下命令,開啟環...