PHP速学教程(入门到精通)
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
php读取csv时中文乱码的解决办法:首先在导入csv的php脚本文件头部加上相应代码;然后使用【$row】进行转义,将中文编码读取出来;最后使用一个【fgetcsv()】方法的替代函数,防止php该函数自带着一些bug即可。
php读取csv时中文乱码的解决办法:
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 <p><img src="https://img.php.cn/upload/image/253/389/818/1594348550264382.png?x-oss-process=image/resize,p_40" title="1594348550264382.png" alt="496ade1d4ee472a66ecde4c9574caf3.png"></p><blockquote><p>相关学习推荐:<a href="https://www.php.cn/course/list/29.html" target="_blank">PHP编程从入门到精通</a></p></blockquote>
php免费学习视频:立即学习
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!
已抢7591个
抢已抢97607个
抢已抢15268个
抢已抢54025个
抢已抢198506个
抢已抢88415个
抢