2011-10-26 9 views
0

私はPHPでCSVファイルを作成しています。私のcsvファイルにデータを書き込むために、私はphp関数 "fputcsv"を使います。PHP:WindowsエンコードでCSVファイルを作成する

これは問題です: 作成したファイルを通常Excelで開くことができます。しかし、私は店舗システム(この場合は "shopware")にファイルをインポートできません。それは "データを読むことができませんでした"のようなものです。

そして今、手がかりが来る:

私が作成したファイルを開き、「名前を付けて保存」と入力して「CSV(カンマ区切り)」を選択する選択した場合、このファイルはshopwareにインポートすることができます。私は、私がデータのエンコードに使用したphp関数 "mb_convert_encoding"について何かを読んだが、問題を解決できなかった。

私を助けることができれば非常にうれしいです。

ありがとうございました。

答えて

0

私はfputcsvを使ってエンコードを設定できないと思います。しかし、fputcsvはロケール設定を見ていますが、setlocaleで変更することができます。

ファイルを直接ユーザーのブラウザに送信し、ヘッダー機能でcontenttypeとcharsetを変更することができます。

+0

私はfputcsvでエンコードタイプを設定しません。私はちょうどfputcsvが引数として取る入力配列の値をエンコードします。ファイルはダウンロード用ではなく、ショップウェアへのインポートを開始するcronジョブ用のものです。 – user963942

0

これはあなたのシステムについて詳しく知りません。ほとんどの場合、文字エンコーディングとは関係ありません。間違った数の列や列ヘッダーが間違っていると、おそらく問題になります。

それは文字エンコーディングの問題である場合は、あなたの最善の策は次のとおりです。

$new_str = mb_convert_encoding($str, 'Windows-1252', 'auto'); 

もちょうど\ nをいない、\ rをする\ nの改行を終了します。

これで解決しない場合は、ソフトウェアのドキュメントを確認する必要があります。

+0

各行で正しい列数が確認できました。残念ながら、提案されたエンコーディングは問題を解決しませんでした。私はfputcsvによって自動的に書かれているので、EOL文字には何の影響もありません。どのソフトウェアのドキュメントですか? – user963942

0

ありがとうございます。 fputcsvをfwriteに置き換えてこの問題を解決しました。その後、私はちょうど "\ r \ n"(感謝wmil)を行の最後に追加する必要があり、生成されたファイルはshopwareで読むことができます。

明らかに、fputcsv関数は\ nを使用し、\ r \ nはEOL文字として使用しません。

関連する問題