2016-08-26 9 views
1

* .CSVファイルを読み込んだスクリプトがあり、その内容をMSSQLデータベースにエクスポートします。スクリプトはCLI経由でのみ実行されます。CSVインポート時の特殊文字コード

私の問題は、このCSVファイルには、ą,ó,ż,ź,śのような国別文字列が含まれていることです。たとえば、私は単語pracownikówを持っていますが、CLIで私は単語pracownikˇwを参照してください。働いていない - 私はsetlocaleの有無にかかわらずfgetcsvを使用して

  • を試してみました何

    私のコード

    $handler = fopen($file, "r"); 
         if ($handler !== false) { 
          while (($this->currentRow = fgetcsv($handler, 0, $this->csvDelimiter)) !== false) { 
    
           $row = $this->setHeaders(
            $this->currentRow, 
            $this->config[$type]['columnMapping'] 
           ); 
    
           if ($row !== false) { 
            $this->dataImported[$type][] = $row; 
           } 
          } 
    
          fclose($handler); 
         } 
    

  • fgetcsvfgetsに置き換え、各行をstr_getcsvで読み取ってください。 - 動作しません。
  • 各行にutf8_encodeを使用すると動作しません。

追加情報

  • は私のPHP(PHP5.3)と、このファイルはANSIIでエンコードされているいくつかの編集者によると、私はiconvでそれをデコードしようとしましたが、すべての特殊文字はいつもと交換されています前に示したようないくつかの奇妙な記号。
+0

不要な変換は、読み込み時または挿入時に正確に行われますか? ... – Jakumi

+0

@Jakumiファイル読み込み直後の未解決の変換の出来事 – TomTom

+0

CLIで*正しく読み込むと、ロケールは 'chcp'でこれらの文字をサポートするものに変更されますが、ユニコードのサポートは非​​常に限られていることに注意してください。しかし、おそらく問題は、他のアプリもそれを読むのに問題がある場合、データベースの正しい連合とエンコーディングを設定する必要があるということです。 – Xorifelse

答えて

1

$this->currentRowのループでは、特殊なcharを持つ各要素に使用しようとします。

echo mb_convert_encoding($data[$c],"HTML-ENTITIES","UTF-8");