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

Mrzhou
Mrzhou
Mrzhou
257
文章
1
评论
2019年12月11日15:34:32 评论 1,019

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

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

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

php读取csv时,读取中文乱码问题解决方法
php读取csv时,读取中文乱码问题解决方法
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;
}
继续阅读
Mrzhou
  • 本文由 发表于 2019年12月11日15:34:32
  • 转载请务必保留本文链接:https://zhouxiaosong.com/1061.html
PHP SPL 标准库之 Countable 脚本编程

PHP SPL 标准库之 Countable

本文实例讲述了PHP标准库 (SPL)——Countable用法。分享给大家供大家参考,具体如下: 类实现 Countable 可被用于 count() 函数. 接口摘要 Countable { /*...
苹果mac系统如何配置apache与php? 操作系统

苹果mac系统如何配置apache与php?

在Mac环境下系统本身就带有的Apache(阿帕奇服务器)和PHP都预装好了. 下面我们逐步来操作Apache和PHP的合并: 第一步:查看系统预装的阿帕奇和PHP版本 (1)打开终端,输入命令:su...
PHP规范的注释方法大全 脚本编程

PHP规范的注释方法大全

本篇文章介绍了六种PHP的注释方式,大家一起来学习一下吧! PHP 单行注释语法 在一行中所有 DE>//DE> 符号右面的文本都被视为注释, 因为 PHP 解析器忽略该行 DE>/...
php怎么对图片不同尺寸显示 脚本编程

php怎么对图片不同尺寸显示

一张图片可能会在不同的地方显示,大小不同,比例也不同,因此本例介绍的这个图片自动裁切还是比较有用的,有需求的朋友可以看看。 如果做过那种门户站的朋友,肯定知道,一张图片可能会在不同的地方显示、大小不同...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: