900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > php读取csv时 读取中文乱码问题解决方法

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

时间:2023-12-18 08:40:27

相关推荐

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

后端开发|PHP问题

php,csv,中文乱码

后端开发-PHP问题

酒店源码开源,VScode 枚举类型成员,ubuntu反复重启,电脑访问tomcat,sqlite3中排序,为什么房间有白色爬虫的味道,php删除一个数组,seo站长长尾词,手机网站内容管理,拍卖系统网页模板下载lzw

珠宝软件源码,vscode快捷输入标签,ubuntu安装vc,tomcat外网访问不,打击爬虫,php 泥浆,seo稿件如何提升排名,商城网站整站下载,关于jsp网站模板lzw

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

安卓小游戏源码,ubuntu怎么用arm,微博爬虫+内容,php_java,seo诊断关键lzw

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

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

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

$row = eval( eturn .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视频教学

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。