2011-10-26 32 views
0

我使用php創建csv文件。要將數據寫入我的csv文件,我使用php函數「fputcsv」。PHP:使用windows編碼創建CSV文件

這是問題: 我可以用Excel正常打開創建的文件。但我不能將文件導入到一個商店系統(在這種情況下是「商店」)。它表示類似「無法讀取數據」。

現在來的線索:

如果我打開創建的文件,並選擇「另存爲」,然後選擇「CSV(逗號分隔)」的類型,這個文件可以導入到shopware。我讀了一些關於用於編碼數據的php函數「mb_convert_encoding」,但它無法解決問題。

如果你能幫助我,我將非常高興。

謝謝。

回答

0

我認爲你不能使用fputcsv設置編碼。但是fputcsv會查看語言環境設置,您可以使用setlocale更改該設置。

也許你可以直接發送你的文件到用戶瀏覽器,並使用改變contenttype和charset與頭功能。

+0

我沒有設置fputcsv的編碼類型。我只是編碼輸入數組的值,fputcsv將其作爲參數。該文件不是用於下載,而是用於啓動導入到餐具的cronjob。 – user963942

0

如果不知道有關係統的更多信息,則無法回答。很可能它與字符編碼無關。這可能是錯誤的列數或列標題不正確的問題。

如果它是一個字符編碼的問題,最好的辦法是:

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

也結束與\ r \ n,而不是僅僅的\ n換行符。

如果這不起作用,您需要檢查軟件文檔。

+0

列的數量在每一行都是正確的,我剛剛驗證過。不幸的是,建議的編碼並沒有解決問題。我對EOL角色沒有影響,因爲它是由fputcsv自動編寫的。哪些軟件文檔是你的意思? – user963942

0

感謝您的輸入。 我通過用fwrite替換fputcsv解決了這個問題。然後,我只需要將「\ r \ n」(感謝wmil)添加到行的末尾,並且生成的文件可以被商店讀取。

顯然,fputcsv函數使用\ n而不是\ r \ n作爲EOL字符。