打开CSV文件不正确编码

问题描述:

当我打开CSV文件打开CSV文件不正确编码

$str = file_get_contents($filename);  
$str = mb_convert_encoding($str,"utf-8","sjis"); 
var_dump($str); 

它这样表示

\0000\000.\0000\0000\0008\0000\0005\0007\000,\0000\000.\0000\0001\0000 .... 

起初我认为,这是编码的问题,所以我说mb_convert_encoding但在徒劳的。

是什么导致这种不正确的编码?

+0

使用的file_get_contents(),您无法读取csv文件; –

+0

该文件是什么样子?它真的取决于生成csv文件的软件。编码csv内容的问题非常普遍。 – Calimero

+2

@SureshKamrushi ......当然,你可以,它只是一个文本文件 - 不会被解析成数组或任何东西,但它可以被读取(权限允许)。 – CD001

更好,你可以这样做:http://php.net/manual/en/function.fgetcsv.php
或者:

$row = 1; 
if (($handle = fopen("test.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $num = count($data); 
     echo "<p> $num fields in line $row: <br /></p>\n"; 
     $row++; 
     for ($c=0; $c < $num; $c++) { 
      echo $data[$c] . "<br />\n"; 
     } 
    } 
    fclose($handle); 
} 

代码抄自http://php.net/manual/en/function.str-getcsv.php