php读取csv时,读取中文乱码问题解决方法

php读取csv时,读取中文乱码问题解决方法

内容导读

收集整理的这篇技术教程文章主要介绍了php读取csv时,读取中文乱码问题解决方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1637字,纯文字阅读大概需要3分钟

内容图文

1、首先讲linux,不管是centos或者Ubuntu。在导入csv的php脚本文件头部加上如下代码:

setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030'));

这段代码的作用是改变脚本默认编码,因为操作系统的编码格式不是GBK所以,读取中文的时候会乱码。

2、接着讲windows,我们在读取csv数据的时候,会有一个while循环遍历每一行的数据,而读取的每一行数据,就需要我们进行转义,将中文编码读取出来。代码如下:

$row = eval('return '.iconv('gbk','utf-8',var_export($row,true)).';');

$row,就是读取出来每一行的数据变量。

3、最后,贴一个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, $dummy);


 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时,读取中文乱码问题解决方法的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php读取csv时,读取中文乱码问题解决方法全部内容,希望文章能够帮你解决php读取csv时,读取中文乱码问题解决方法所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com