php读取csv时中文乱码的处理方法:起首正在导入csv的php剧本文件头部加之相应代码;而后应用【$row】进行本义,将中文编码读掏出来;最初应用一个【fgetcsv()】办法的代替函数,避免php该函数自带着一些bug便可。
php读取csv时中文乱码的处理方法:
一、起首讲linux,不论是centos或许Ubuntu。正在导入csv的php剧本文件头部加之以下代码:
setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030'));
这段代码的作用是扭转剧本默许编码,由于操作零碎的编码格局没有是GBK以是,读取中文的时分会乱码。
二、接着讲windows,咱们正在读取csv数据的时分,会有一个while轮回遍历每一一行的数据,而读取的每一一行数据,就需求咱们进行本义,将中文编码读掏出来。代码以下:
$row = eval('return '.iconv('gbk','utf-8',var_export($row,true)).';');
$row
,就是读掏出来每一一行的数据变量。
三、最初,贴一个fgetcsv()
办法的代替函数,这类是针对有些老版本的php该函数自带着一些bug的状况。假如上边两点仍是没方法处理您的成绩,您能够测验考试一下应用该函数,与前边两点合营应用。
function fgetcsv_reg(& $handle, $length = null, $d = ',', $e = '"') { $d = preg_quote($d); $e = preg_quote($e); $_line = ""; $eof=false; while ($eof != true) { $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length)); $itemcnt = preg_match_all('/' . $e . '/', $_line, $du妹妹y); if ($itemcnt % 2 == 0) $eof = true; } $_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++) { $_csv_data[$_csv_i] = preg_replace('/^' . $e . '(.*)' . $e . '$/s', '$1', $_csv_data[$_csv_i]); $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]); } return empty ($_line) ? false : $_csv_data; }
相干学习保举:PHP编程从入门到通晓
以上就是php读取csv时中文乱码怎样办?的具体内容,更多请存眷资源魔其它相干文章!
标签: php php教程 php故障解决 php使用问题 csv
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
抱歉,评论功能暂时关闭!