Home  >  Article  >  php教程  >  php使用fgetcsv读取csv文件乱码解决方法

php使用fgetcsv读取csv文件乱码解决方法

WBOY
WBOYOriginal
2016-05-23 08:33:571279browse

在php中碰到乱码多半是编码问题了,在这里我们分析了很久得出了下面fgetcsv读取csv文件乱码原因所在与解决办法,例子代码如下:

<?php
function get_csv_contents($file_target) {
    $handle = fopen($file_target, &#39;r&#39;);
    while ($data = fgetcsv($handle, 1000, ",")) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br>n";
        $row++;
        for ($c = 0; $c < $num; $c++) {
            echo $data[$c] . "<br>n";;
            /*echo getUTFString($data[$c])*/
        }
    }
    fclose($handle);
}

导入的csv文件是以ansi编码保存的, 对于中文操作系统环境对应的应该就是gbk编码了, 通过手动更改浏览器字符编码为gbk, 乱码的情况消失了, 于时进行了下面调整, 代码如下:

$data = eval('return ' . iconv('gbk', 'utf-8′,var_export($data,true)).';'); 

$data为需要转换编码的数组.

补充:LINUX FGETCSV读取GBK数据乱码

当Linux系统是使用的默认设置,则在该Linux服务器上对gbk的csv格式文件进行处理的时候,就会出现乱码现象.

解决方法是:使用 setlocale 函数设置环境变量,比如要设置使用gb 的区域设置可以在fgetcsv前使用下面的语句,代码如下:

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

具体使用哪些locale可以使用linux命令locale - a查看系统支持哪些 . 


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn