php项目导入csv文件后,php无法读取到ascii编码的数据。强制使用iconv()和mb_convert_encoding()将ascii转化为utf-8无效。
搜索原因:ascii是utf-8的子集。
一、linux平台
在读取csv文件前先使用setlocale函数来设置地区信息。
string setlocale(string category, string locale);
参数 category 有下列的选择:
LC_ALL 包括下面的全项选项都要。
LC_COLLATE 配置字符串比较,PHP 目前尚未实作出来本项。
LC_CTYPE 配置字符类别及转换。例如全变大写 strtoupper()。
LC_MONETARY 配置金融货币,PHP 目前尚未实作。
LC_NUMERIC 配置小数点后的位数。
LC_TIME 配置时间日期格式,与 strftime() 合用。
参数 locale 有下列的选择:
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, 'en_US.UTF-8');
if ($data = fgetcsv($handle, 10000)) {}
二、window平台
听别人说window平台使用iconv()和mb_convert_encoding()是可以的。