今天使用fgetcsv,打开上传的CSV文件后,发现文件列中包含中文的都为空。
解决方案:
// utf-8
setlocale(LC_ALL, ‘en_US.UTF-8′);
// 简体
setlocale(LC_ALL, ‘zh_CN’);
以下是常用的地区标识:
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
例子:
setlocale(LC_ALL, 'zh_CN.GBK'); $goods_csv=$_FILES['goods_info']['tmp_name']; //CSV编码为ANSI $file = fopen($goods_csv,'r'); while ($data = fgetcsv($file)) { $goods_list[] = $data; } foreach($goods_list as $key=>$value){ foreach($value as $k=>$v){ //由于PHP文件编码是UTF-8,把GBK转码成UTF-8 $goods_list[$key][$k] = mb_convert_encoding($v, "UTF-8", "GBK"); } } print_r($goods_list); fclose($file);
近期评论