2016-09-07 10 views
1

私はcsvをインポートするこの機能を持っています。PHPで正しいエンコードcsvにアーカイブできません

public function csv_to_array($filename, $delimiter = ',', $enclosure = '"') 
{ 

    $header = null; 
    $data = array(); 


    if (($handle = fopen($filename, 'r')) !== false) 
    { 

     $all = 0; 

     while(($row = fgetcsv($handle, 0, $delimiter, $enclosure)) !== false) 
     { 

      $i=0; 
      foreach($row as $string) { 
       $row[$i] = utf8_encode($string); 
       $i++; 
      } 

      if(!$header) { 
       $header = $row; 
      }else{ 
       $data[] = array_combine($header, $row); 
      } 
      $all++; 
     } 

     fclose($handle); 

    } 

    return $data; 
} 

ANSIエンコーディングで提供されるファイルの中には、str_getcsvまたはfgetcsvでは機能しないものがあります。 は私も

mb_convert_encoding($line, 'Windows-1252', 'UTF-8'); 

かのiconv、はutf8_encodeとして最初にそれらを変換しようとした、...他のプロジェクトで

私はこの問題についてつまずいたことはありません。通常、上記のうちのいくつかがこのトリックを行いますが、今回は行いません。システム全体とデータベースはutf-8に設定されています。どのように私の問題を解決するための既知の回避策はありますか?私はあなたが右のエンコーディング機能のいずれかを使用していない

+0

問題文字はいくつですか?少数または多く? –

+0

私はこの問題も抱えていましたが、前にutf8かどうかを確認しました。['snippet'](https://git.io/vicjj) – CodeBrauer

+2

' ANSI Encoding'があまりにも一般的です。入力エンコーディングが 'Windows-1252'であることを絶対に確かめる必要があります。 – apokryfos

答えて

1

:(無力だあなたはUTF-8へのWindows-1252からを変換したい場合は、これらのいずれも動作します:。

utf8_encode($string) 

... はUTF-8reference)にISO-8859-1に変換します。

mb_convert_encoding($line, 'Windows-1252', 'UTF-8'); 

... Windowsの-1252にUTF-8からを変換しreference)。

急いでいるときは、単にドキュメントを読んでください;-)

関連する問題