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

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

WBOY
WBOYOriginal
2016-05-23 08:33:571280Durchsuche

在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查看系统支持哪些 . 


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn