php读取cv时中文乱码怎么办?

2025-04-23 02:45:01 5
  • 收藏
  • 管理
    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 < 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读取myql中文乱码怎么解决? 下一页:php语言如何查询Myql数据库内容
    全部评论(0)