如何解决php读取csv时,读取中文乱码的问题

  介绍

这篇文章主要介绍如何解决php读取csv时,读取中文乱码的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

setlocale (LC_ALL,数组(& # 39;zh_CN.gbk& # 39; & # 39; zh_CN.gb2312& # 39;, & # 39; zh_CN.gb18030& # 39;));

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

如何解决php读取csv时,读取中文乱码的问题

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

$行=eval(& # 39;返回& # 39;.iconv (& # 39; GBK # 39; & # 39; utf - 8 # 39;, var_export(美元行,真的))强生# 39;;& # 39;);

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

3,最后,贴一个:()方法的替代函数,这种是针对有些老版本的php该函数自带着一些错误的情况。如果上边两点还是没办法解决您的问题,您可以尝试一下使用该函数,与前边两点配合使用。

函数fgetcsv_reg (,句柄,长度=null,美元$ d=& # 39; & # 39; $ e=& # 39;“& # 39;) {   d (d=preg_quote美元);   e=preg_quote美元($ e);   $ _line=?“;   美元eof=false;   而(eof美元!=true) {   _line美元。=(空(长度)美元?fgets(处理):fgets(手柄,长度)美元);   $ itemcnt=preg_match_all (& # 39;/& # 39;。$ e。& # 39;/& # 39;_line美元,美元的假);   如果($ itemcnt % 2==0)   美元eof=true;   }   $ _csv_line=preg_replace (& # 39;/(?):|[])?/& # 39;美元,美元d,修剪(_line美元));   _csv_pattern=& # 39;美元/(& # 39;。$ e。& # 39;[^ & # 39;。$ e。& # 39;]* (?:& # 39;。$ e。$ e。& # 39;[^ & # 39;。$ e。& # 39;]*)* & # 39;。$ e。& # 39;| [^ & # 39;。美元d。& # 39;]*)& # 39;。美元d。& # 39;/& # 39;;   preg_match_all ($ _csv_pattern _csv_line美元_csv_matches美元);   _csv_data=https://www.yisu.com/zixun/_csv_matches美元[1];   ($ _csv_i=0;美元_csv_i

如何解决php读取csv时,读取中文乱码的问题

以上是如何解决php读取csv时,读取中文乱码的问题的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

如何解决php读取csv时,读取中文乱码的问题