• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-04) 20次浏览 已收录 0个评论

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',&<span style="color:transparent">来源gaodai#ma#com搞*!代#%^码网</span>#39;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时,读取中文乱码问题解决方法的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php读取csv时,读取中文乱码问题解决方法
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址