function get_csv_contents( $file_target ){ $handle  = fopen( $file_target, 'r'); 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);
}

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2010-06-02 17:32:05 编辑
      

  2.   


    array fgetcsv ( int handle [, int length [, string delimiter [, string enclosure]]] )
    handle
    一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。 length (可选)
    必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。 delimiter (可选)
    设置字段分界符(只允许一个字符),默认值为逗号。 enclosure (可选)
    设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 
    和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。 fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。 注意: CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。 例 1. 读取并显示 CSV 文件的整个内容<?php
    $row = 1;
    $handle = fopen("test.csv","r");
    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";
        }
    }
    fclose($handle);
    ?>  
     
    从 PHP 4.3.5 起,fgetcsv() 的操作是二进制安全的。 注意: 该函数对区域设置是敏感的。比如说 LANG 设为 en_US.UTF-8 的话,单字节编码的文件就会出现读取错误。 
      

  3.   

    文件是空也会有乱码额。我的csv文件是用Windows新建的没有任何字符。
      

  4.   

    csv我如果没记错...只能是GBK编码的...
      

  5.   

    先看看你导出的是什么编码再说,导出都乱码了,那肯定乱码。
    你用EditPlus 看看导出的文件是否为乱码。如果这个乱,最好检查导出程序。
      

  6.   

    我用你这个函数测试 正常啊。没有乱码。
    怀疑你的编码有问题.
    你先确认你的csv文件 是utf-8.
    然后你再确认你的php程序是utf-8.
    这样看看正确吗?
      

  7.   

    没有用这个函数了,太头疼,换了一个phpexcel类。很好用,一点乱码都没有